Объявление и инициализация

Поскольку структура - это новый тип данных, его надо предварительно объявить в начала

программы, например так

struct Book {

char author[40]; // автор, символьная строка

char title[80]; // название, символьная строка

Int year; // год издания, целое число

Int pages; // количество страниц, целое число

};

При таком объявлении типа никакая память не выделяется, реальных структур в памяти еще нет. Этот фрагмент просто скажет компилятору, что в программе могут быть элементы такого типа. Теперь, когда надо выделить память, мы напишем

Book b;

Это оператор выделяет место в памяти под одну структуру типа Book и дает ей имя b (таким образом, Book – это названия типа данных (как int или float), а b – это имя конкретного экземпляра). При этом можно сразу записать в память нужное начальное значение всех или нескольких первых элементов структуры в фигурных скобках через запятую. Поля заполняются последовательно в порядке их объявления. Память, отведенная на поля, оставшиеся __________незаполненными, обнуляется.

Book b = {

"А. С. Пушкин",

"Полтава",

1998 };

Работа с полями структуры

Обращение по имени

Для обращения ко всей структуре используется ее имя, а для обращения к отдельному полю имя этого поля ставится через точку. Элементы структуры вводятся последовательно по одному. Заполнять их можно в любом порядке. С полем структуры можно работать так же, как и с переменной соответствующего типа: числовые переменные могут участвовать в арифметических выражениях, со строками можно выполнять все стандартные операции.

Book b;

strcpy (b.author, " А.С. Пушкин ");

b.year = 1998;

􀀗 Обращение по адресу

Пусть известен адрес структуры в памяти. Как известно, адрес может быть записан в указатель – специальную переменную для хранения адреса. Для обращения к полю структуры по ее адресу используют специальный оператор ->.

Book b; // структура в памяти

Book *p; // указатель на структуру

p = &b; // записать адрес структуры в указатель

strcpy (p->author, "А.С. Пушкин"); // обращение по адресу

p->year = 1998;

Ввод и вывод


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



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