Лекція 11. Структури або записи
4. Структурні змінні та покажчики
На відміну від масиву, ім'я структурної змінної НЕ є адресою. Однак в окремих випадках використання покажчиків на структуру дозволяє реалізувати ефективну програму. Наприклад, надрукувати масив даних про студентів:
struct person
{ char name[20]; int year;
char sex; };
main ()
{ struct person stud[30], *stpr; // stpr – покажчик на структуру // присвоєння значень всім елементам
printf (“Прізвище рік стать\n”); for (stpr=stud; stpr<stud+30; ++stpr)
printf (“ %s %d %c \n“, (*stpr).name, (*stpr).year, (*stpr).sex); }
Тут для звертання до елементів структур використані імена (*stpr).name. і насправді , при модифікації покажчика на структуру в stpr буде записана адреса наступної структури й звертання до неї можна здійснити за допомогою прямої адресації: *stpr. Круглі дужки тут потрібні тому, що операція "." має більший пріоритет, ніж *. І якщо дужок не буде, то вийде нісенітниця, тому що stpr - це покажчик, а не повне ім'я структури.
У версії ANSI-C дозволено передавати структури як параметри функцій і передавати структури через ім'я функції. Крім того, для них впроваджена операція присвоєння. Інші арифметичні операції й відносини над структурами не виконуються, тому що в цьому нема сенсу.
Поля
У деяких завданнях аналізу й класифікації шифр об'єкта повинен відображати наявність або відсутність певного якості. Наприклад, при синтаксичному аналізі таблиць імен змінних прийде вирішувати, до якого класу пам'яті належить змінна: автоматичного, статичного або зовнішнього. Звичайно, можна було б використовувати структуру з такими трьома елементами, а при наявності такої властивості записувати 1, при відсутності 0.
При великій кількості змінних це приведе до нераціонального використання пам'яті. Тому краще під кожну таку ознаку можна відвести один біт і кодувати ці ознаки ступенем числа 2.


Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу