712_____________________________________________Глава 12

bool       Sex;

AnsiString Dep;

};

Ключевое слово struct начинает определение структуры. Идентификатор
TPers — тег (обозначение, имя-этикетка) структуры. Тэг структуры используется
при объявлении переменных структур данного типа. В этом примере имя нового
типа — TPers. Имена, объявленные в фигурных скобках описания структуры —
это элементы структуры. Элементы одной и той же структуры должны иметь уни-
кальные имена, но две разные структуры могут содержать не конфликтующие эле-
менты с одинаковыми именами. Каждое определение структуры должно заканчи-
ваться точкой с запятой.

Определение TPers содержит шесть элементов. Предполагается, что такая
структура может хранить данные о сотруднике некоего учреждения. Типы данных
разные: элементы Fam, Nam, Par и Dep — строки, хранящие соответственно фа-
милию, имя, отчество сотрудника и название отдела, в котором он работает. Эле-
мент Year целого типа хранит год рождения, элемент Sex булева типа хранит све-
дения о поле. Элементы структуры могут быть любого типа, но структура не может
содержать экземпляры самой себя. Например, элемент типа TPers не может быть
объявлен в определении структуры TPers. Однако, может быть включен указатель
на другую структуру типа TPers. Структура, содержащая элемент, который явля-
ется указателем на такой же структурный тип, называется структурой с самоадре-
сацией. Они очень полезны для формирования различных списков (см. раз-
дел 12.11.2).

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

TPers Pers, PersArray[10], *Ppers;

объявляет переменную Pers типа TPers, массив PersArray — с 10 элементами типа
TPers и указатель Ppers на объект типа TPers.

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

struct (

AnsiString Fam,Nam,Par;

unsigned   Year;

bool       Sex;

AnsiString Dep;

}Pers, PersArray[10], *Ppers;

Для доступа к элементам структуры используются операции доступа к элемен-
там: операция точка (.) и операция стрелка (•>). Операция точка обращается к эле-
менту структуры по имени объекта или по ссылке на объект. Например:

Pers.Fam = "Иванов";

Pers.Nam = "Иван";

Pers.Par = "Иванович";

Pers.Year = 1960;

Pers.Sex = true;

Pers.Dep = "Бухгалтерия";

Операция стрелка обеспечивает доступ к элементу структуры через указатель
на объект. Допустим, что выполнен оператор

Ppers = &Pers;