Лекція 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.


Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0