int nums[10][10]; // Целочисленный массив размерностью 10 х 10.
float b;
} var;
Чтобы обратиться к элементу массива
var.nums[3][7]
Как показано в этом примере, если массив является членом структуры, то для доступа к элементам этого массива индексируется имя массива, а не имя структуры.
Если некоторая структура является членом другой структуры, она называется вложенной структурой. В следующем примере структура
struct addr {
char name[40];
char street[40];
char city[40];
char zip[10];
}
struct emp {
addr address;
float wage;
} worker;
Здесь структура
worker.address.zip = 98765;
Как видите, члены структур указываются слева направо, от самой крайней внешней до самой дальней внутренней.
Структура также может содержать в качестве своего члена указатель на эту же структуру. И в самом деле для структуры вполне допустимо содержать член, который является указателем на нее саму. Например, в следующей структуре переменная
struct mystruct {
int а;
char str[80];
mystruct *sptr; // указатель на объекты типа mystruct
};
Структуры, содержащие указатели на самих себя, часто используются при создании таких структур данных, как
С++-структуры — потомки С-структур. Следовательно, любая С-структура также является действительной С++-структурой. Между ними, однако, существуют важные различия. Во-первых, как будет показано в следующей главе, С++-структуры имеют некоторые уникальные атрибуты, которые позволяют им поддерживать
Чтобы понять это различие, рассмотрим следующий фрагмент С-кода.
struct C_struct {
int а; int b;
}
// объявление переменной C_struct
struct C_struct svar;
Обратите внимание на то, что приведенное выше определение структуры в точности такое же, как в языке C++. Теперь внимательно рассмотрите объявление структурной переменной
Если вам придется преобразовывать старые С-программы в код C++, не беспокойтесь о различиях между С- и С++-структурами, поскольку C++ по-прежнему принимает С-ориентированные объявления. Например, предыдущий фрагмент С-кода корректно скомпилируется как часть любой С++-программы. С точки зрения компилятора C++ в объявлении переменной
Битовое поле —