Структура создается при помощи ключевого слова struct, за которым следуют необязательное поле тега (tag) и список элементов структуры. Поле тега используется для создания других переменных данного структурного типа. Синтаксис структуры с необязательным полем тега:
struct поле тега {
тип_элемента элемент].;
тип_элемента элемент2;
тип_элемента элементЗ;
тип_элемента элемент^N;
};
В некоторых примерах используется структура, подобная следующей:
struct stboat { // катер
char sztype [iSTRING15 + iNULL_CHAR]; // тип
char szmodel [iSTRING15 + iNULL_CHAR]; // модель
char sztitle [iSTRING20 + iNULL_CHAR]; // бортовой номер
int iyear; // год выпуска
long int lmotor_hours; // ресурс двигателя
float fsaieprice; // продажная
стоимость
};
Данная структура создана при помощи ключевого слова struct, за которым следует поле тега или тип структуры. В этом примере stboat является теговым полем структуры.
Объявление этой структуры содержит несколько элементов: sztype, szmodel и sztitle являются строками заданной длины, заканчивающимися null-символом. За ними следуют целое iyear, длинное целое lmotor__hours и число с плавающей точкой fsaieprice. Эта структура используется для хранения коммерческой информации о катере или лодке.
Описан новый гипотетический структурный тип stboat. Однако, с этой структурой не связана никакая переменная; для этого в программе можно использовать следующий оператор:struct stboat stusecUDoat;
Этот оператор описывает переменную stused_boat, имеющую тип struct stboat. В объявлении нужно использовать поле тега структуры. Если данный оператор располагается в некоторой функции, то структура stused__boat имеет локальную область действия внутри этой функции. Если оператор находится в программе вне всех функций, то структура имеет глобальную область действия. Также можно объявить структурную переменную, используя следующий синтаксис:
struct stboat {
char sztype [iSTRING15 + iNULL_CHAR];
char szmodel [iSTRING15 + iNULL_CHAR];
char sztitle[iSTRING20 + iNULL_CHAR];
int iyear;
long int lmotor_hours;
float fsaieprice;
} stused_boat;
Объявление переменной заключено между фигурной скобкой, закрывающей структуру (}), и обязательной точкой с запятой. В обоих примерах переменная stused_boat объявляется как структура типа stboat. На практике, если со структурным типом связывается только одна переменная, поле тега можно убрать, поэтому предыдущий пример можно записать и так:
struct {
char sztype [iSTRING15 + iNULL_CHAR];
char szmodel [iSTRING15 + iNULL_CHAR];
char sztitle[iSTRING20 + iNULL_CHAR];
int iyear;
long int imotor hours;
float fsaieprice;
} stused_boat;
В этом объявлении структуры отсутствует поле тега и создается анонимный структурный тип. Поскольку оператор описывает единственную переменную, stused_boat, то нигде в приложении нельзя создать другую переменную такого же типа. Если поле тега структуры отсутствует, то такой синтаксис не позволяет ссылаться на этот новый тип. Но с одним структурным типом можно связать несколько переменных, не указывая поле тега.