Язык программирования Си


A Объявления структур и объединений


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

спецификатор структуры-или-объединения: структуры-или-объединения идентификаторнеоб {список-объявлений-структуры} структуры-или-объединения идентификатор

структура-или-объединение: struct union

Список-объявлений-структуры является последовательностью объявлений элементов структуры или объединения:

список-объявлений-структуры: объявление-структуры

список-объявлений-структуры объявление-структуры

объявление-структуры: список-спецификаторов-квалификаторов список-структуры-объявителей;

список-спецификаторов-квалификаторов: спецификатор-типа список-спецификаторов-квалификаторовнеоб

квалификатор-типа список-спецификаторов-квалификаторовнеоб

список-структуры-объявителей: структуры-объявитель

список-структуры-объявителей , структуры-объявитель

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

структуры-объявитель: объявитель

объявительнеоб : константное-выражение

Спецификатор типа, имеющий вид

структуры-или-объединения идентификатор { список-объявлений-структуры }

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

структуры-или-объединения идентификатор

Если спецификатор с тегом, но без списка появляется там, где тег не объявлен, специфицируется незавершенный тип. Объекты с незавершенным типом структуры или объединения могут упоминаться в контексте, где не требуется знать их размер — например в объявлениях (но не определениях) для описания указателя или создания typedef, но не в иных случаях. Тип становится завершенным при появлении последующего спецификатора с этим тегом, содержащего список объявлений. Даже в спецификаторах со списком объявляемый тип структуры или объединения является незавершенным внутри списка и становится завершенным только после появления символа }, заканчивающего спецификатор.




- Начало -  - Назад -  - Вперед -



Книжный магазин