Основы программирования на C++, PASCAL
4.12. Структуры и объединения
В языках Си/Си++ понятие структуры аналогично понятию записи (record) в Паскале. Это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных.
Правила использования структур обсудим на примере, аналогичном тому, который рассматривался в разделе 3.20 применительно к Паскалю.
Сведения о выплате студентам стипендии требуется организовать в виде, показанном на рис. 46.
Элементы такой структуры (фамилия, курс, группа, стипендия) называются полями. Каждому полю должно быть поставлено в соответствие имя и тип.
Формат описания структурного типа следующий:
struct имя_типа
{определения_элементов};
В конце обязательно ставится точка с запятой (это оператор). Для рассмотренного примера определение соответствующего структурного типа может быть следующим:
struct student { char fam[30];
int kurs;
char grup[3];
float stip;
};
После этого student становится именем структурного типа, который может быть назначен некоторым переменным. В соответствие со стандартом Си это нужно делать так:
struct student stud1, stud2;
Правила Си++ разрешают в этом случае служебное слово struct опускать и писать
student stud1, stud2;
Здесь stud1 и stud2 — переменные структурного типа. Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные:
struct (char fam[30];
int kurs;
char grup[3];
float stip;
} studi, stud2, *pst;
В этом примере кроме двух переменных структурного типа объявлен указатель pst на такую структуру. В данном описании можно было сохранить имя структурного типа student.
Обращение к элементам (полям) структурной величины производится с помощью уточненного имени следующего формата:
имя_структуры.имя_элемента
Снова все похоже на Паскаль. Примеры уточненных имен для описанных выше переменных:
studi.fam; stud1.stip
Значения элементов структуры могут определяться вводом, присваиванием, инициализацией. Пример инициализации в описании:
student studl={"Кротов", 3, "Ф32", 350};
Пусть в программе определен указатель на структуру
student *pst, stud1;
Тогда после выполнения оператора присваивания
pst=&studl;
к каждому элементу структурной переменной studi можно обращаться тремя способами. Например, для поля fam