Тип данных Описатель';'
где
Пример объявления структур:
Переменные
Существует и другой способ объявления переменной структурного типа.
Этот способ основан на использовании заранее объявленного типа структуры. Объявление структурного типа аналогично объявлению перечислимого типа. Структурный тип объявляется следующим образом:
"struct" Тип '{' Список описаний '}';
где Тип — это идентификатор.
В приведенном ниже примере идентификатор student объявляется как тип структуры, список описаний полей которой приводится далее в фигурных скобках:
struct student
{char name[25]; //Имя и фамилия студента
int id; //Номер в журнале
int age; //Возраст
char usp; //успеваемость
};
Тип структуры используется для последующего объявления структур данного вида в форме:
struct Тип Список идентификаторов';'
Пример:
struct student st[23];
Поле структуры может быть указателем на структуру того же самого типа, в которой оно объявлено. Ниже рассматривается пример такой ссылки.
struct node { int data; struct node * next; } st1_node;
Доступ к отдельным полям структуры осуществляется с помощью указания имени структуры и следующего через точку имени поля, например:
st2.id=5; //Присвоить значение полю
st1.name="Иванов"; //Присвоить значение полю
st1_node.data=1985; //Присвоить значение полю
st[1].name="Иванов"; //Занести студента Иванова в журнал
st[1].id=2; //поместить его в журнал под вторым номером
st[1].age=23; //Занести в журнал его возраст
Элементом структуры может быть битовое поле, обеспечивающее доступ к отдельным битам памяти. Вне структур битовые поля объявлять нельзя. Нельзя также организовывать массивы битовых полей и нельзя применять к полям операцию определения адреса. В общем случае тип структуры с битовым полем задается в следующем виде:
"struct" '{' «unsigned»
"unsigned"
Пример:
struct { unsigned a1 : 1;
unsigned a2 : 2;
unsigned a3 : 5;
unsigned a4 : 2; } prim;
Структуры битовых полей могут содержать и знаковые компоненты. Такие компоненты автоматически размещаются на соответствующих границах слов, при этом некоторые биты слов могут оставаться неиспользованными.
Доступ к элементам полей битов выполняется точно так же, как и к компонентам обычных структур. Само же битовое поле рассматривается как целое число, максимальное значение которого определяется длиной поля. Например:
Cntr.Cmd=30;
Иногда один и тот же элемент данных удобно обрабатывать по-разному, в зависимости от ситуации. Например, кодовое слово помехоустойчивого кода можно передавать целиком и можно осуществлять запись информационных и проверочных битов различными процедурами. Еще один пример. Четыре соседних байта можно интерпретировать в один момент времени (для обработки) как число с плавающей запятой, и эти же четыре байта в другой момент времени интерпретировать (для передачи или приема) как четырехэлементный массив байтов.
Объявление объединения подобно структуре, однако в каждый момент времени может использоваться только один из элементов объединения.
Тип объединения объявляется в следующем виде: