Вложенные структуры

Иногда поля структуры сами являются структурными переменными. Такие поля называются вложенными. Так, например, необходимо описать с помощью структуры параметры человека. Поле FIO будет содержать вложенные поля: Fam – фамилия, Imya – имя и Otch – отчество. А поле даты рождения DataR будет содержать вложенные поля: Den – день, Mes – месяц и God – год.

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

struct TypeFIO { // тип фамилии, имени и отчества

char Fam[20];

char Imya[20];

char Otch[20];

};

struct TypeData { // тип даты

int Den;

int Mes;

int God;

};

struct TypePerson { // тип человека

TypeFIO FIO; // поле фамилии, имени, отчества (вложенное)

TypeData DataR; // поле даты рождения (вложенное)

int Ves; // поле веса

int Rost; // поле роста

};

Теперь можно создавать структурные переменные типа TypePerson, например:

TypePerson P;

В результате будет создана переменная следующего вида:

Синтаксис доступа к вложенным полям структурной переменой:

ИмяСтруктурной Переменной. ИмяПоля. ИмяВложенногоПоля

Опишем блок ввода полей переменной P с клавиатуры с выдачей подсказки на экран:

printf (" Fam ");

scanf ("%s", P.FIO.Fam);

printf (" Imya ");

scanf ("%s", P.FIO.Imya);

printf (" Otch ");

scanf ("%s", P.FIO.Otch);

printf (" Den ");

scanf ("%d", &P.DataR.Den);

printf (" Mes ");

scanf ("%d", &P.DataR.Mes);

printf (" God ");

scanf ("%d", &P.DataR.God);

printf (" Ves ");

scanf ("%d", &P.Ves);

printf (" Rost ");

scanf ("%d", &P.Rost);

Поскольку поля Ves и Rost являются обычными полями, то при обращении к ним операция «точка» использовалась только один раз. Для доступа к остальным полям, которые являются вложенными, операция «точка» использовалась дважды.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: