Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 6 7 8 [ 9 ] 10 11 12 ... 210


в объявлении и определение должно предшествовать объявлению через тег, если тег не используется для объявления указателя или структурного типа typedef. В последних случаях объявления могут использовать тег структуры без предварительного определения типа структуры, но все же определение должно находиться в пределах видимости объявления.

Список объявлений элементов <member-declaration-list> -

это одно или более объявлений переменных или битовых полей. Каждая переменная, объявленная в этом списке, называется элементом структурного типа. Объявления переменных списка имеют тот же самый синтаксис, что и объявления переменных, за исключением того, что объявления не могут содержать спецификаторов класса памяти или инициализаторов. Элементы структуры могут быть любого типа: основного, массивом, указателем, совмещением или структурой.

Элемент не может иметь тип структуры, в которой он появляется. Однако, элемент может быть объявлен, как указатель на тип структуры, в которую он входит, позволяя создавать списочные структуры.

Битовые поля

Объявления битовых полей имеют следующий синтаксис: <type-specifier>[<identifier>]:<constant-expression> Битовое поле состоит из некоторого числа бит, специфицированных константным выражением <constant-expression>. Для битового поля спецификатор типа <type-specifier> должен специфицировать беззнаковый целый тип, а константное выражение должно быть неотрицательной целой величиной. Массивы битовых полей, указатели на битовые поля и функции, возвращающие битовые поля не допускаются. Идентификатор <identifier> именует битовое поле. Неименованное битовое поле, чей размер специфицируется как нулевой, имеет специальное назначение: оно гарантирует, что память для следующей переменной объявления будет начинаться на границе int.

Идентификаторы элементов внутри объявляемой структуры должны быть уникальными. Идентификаторы элементов внутри разных структур могут совпадать. В пределах той же самой



видимости теги структур должны отличаться от других тегов (тегов других структур, совмещений и перечислений).

Переменные (элементы) структуры запоминаются последовательно в том же самом порядке, в котором они объявляются: первой переменной соответствует самый младший адрес памяти, а последней - самый старший. Память каждой переменной начинается на границе свойственной ее типу. Поэтому могут появляться неименованные участки между соседними элементами.

Битовые поля не располагаются на пересечении границ, объявленных для них типов. Например, битовое поле, объявленное с типом unsigned int, упаковывается или в пространстве, оставшимся от предыдущего unsigned int или начиная с нового unsigned int.

Примеры:

/**************** Example 1 ****************/

struct float x,y; complex;

/**************** Example 2 *****************/

struct employee char name[20]; int id; long class; temp;

/**************** Example 3 ******************/

struct employee student, faculty, staff;

/**************** Example 4 ******************/

struct sample char c; float *pf;

struct sample *next; x;

/***************** Example 5 ******************/

struct

unsigned icon : 8; unsigned color : 4; unsigned underline : 1; unsigned blink : 1; screen[25][80];



В первом примере объявляется переменная с именем complex типа структура.

Эта структура состоит из двух элементов x и y типа float. Тип структуры не поименован.

Во втором примере объявляется переменная с именем temp типа структура. Структура состоит из трех элементов с именами name, id и class. Элемент с именем name - это массив из 20-ти элементов типа char. Элементы с именами id и class - это простые переменные типа int и long соответственно. Идентификатор employee является тегом структуры.

В третьем примере объявлены три переменных типа структура с именами: student, faculty и staff. Каждая из структур состоит из трех элементов одной и той же конструкции. Элементы определены при объявлении типа структуры с тегом employee в предыдущем примере.

В четвертом примере объявляется переменная с именем x типа структура. Первые два элемента структуры представлены переменной c типа char и указателем pf на величину типа float. Третий элемент с именем next объявляются как указатель на описываемую структуру sample.

В пятом примере объявляется двумерный массив поименованный screen, элементы которого имеют структурный тип. Массив состоит из 2000 элементов и каждый элемент - это отдельная структура, состоящая из четырех элементов типа bit-fild с именами icon, color, underline и blink.

Объявление совмещений

Синтаксис:

union[<tag>]<member-declaration-list><declarator> [,<declarator>...];

union<tag><declarator>[,<declarator>...];

Объявление совмещения определяет имя переменной совмещения и специфицирует множество переменных, называемых элементами совмещения, которые могут быть различных типов. Переменная с типом совмещения запоминает любую отдельную величину, определяемую набором элементов совмещения.



1 ... 6 7 8 [ 9 ] 10 11 12 ... 210

© 2006 - 2022 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика