Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Си++ Занятие 10.doc
Скачиваний:
5
Добавлен:
19.11.2019
Размер:
123.39 Кб
Скачать

Int year; //год

};

Синтаксис определения элементов структуры аналогичен синтаксису определения переменной. Необходимо указать типы данных каждого элемента и размер всех строк и массивов. Определение каждого элемента структуры заканчивается ;. Конец структуры также определяется ; .

Определение сообщает компилятору, сколько памяти следует зарезервировать для каждого элемента новой структуры, сама же память не выделяется.

Написав определение структуры, можно пользоваться новым типом данных – создавать переменные, указатели, массивы и т.п. Название нового типа в нашем примере будет struct date.

Память выделяется при создании объектов структурного типа, т.е. при их объявлении.

Пример 2. Выделение памяти под переменную days типа struct date.

struct date days;

После такого определения компилятор выделяет память под структурную переменную days, которая состоит из двух переменных типа int и массива из 15 элементов типа char.

Выделение памяти под структурные объекты можно совместить с определением структурного типа.

Пример 3.

struct date

{ int day; //день

char month[15]; //месяц

Int year; //год

} a, b, c;

При этом выделяется соответствующая память под три переменные структурного типа – a, b, c.

Выделенное имя нового типа позже также можно использовать для объявления разнообразных структурных объектов, можно создать переменную, массив или указатель структурного типа.

Пример 4. Определить структуру (создать новый тип) и объявит структуру (выделить память под переменные нового структурного типа) для хранения информации о товаре на складе. Каждая позиция склада содержит разнотипную информацию о товаре, например, название, цену, количество, дату поступления.

strucr tovar

{char name[20]; //наименование

double prise; //цена

int vol; //количество

date in_date; //дата поступления

} food;

Такое определение создает новый структурный тип tovar и выделяет память под структурную переменную с именем food. Переменные, подобные food, называют объектами структурного типа или же структурными переменными, но чаще всего структурами. Из-за этого может возникнуть некоторая терминологическая путаница, т.е. имя нового структурного типа тоже можно назвать структурой. Эти два понятия различают по контексту, структурный тип создается один раз и затем используется при создании программных объектов. Сами же объекты (структуры) создаются каждый раз, когда необходимо выделить память для размещения данных.

Примеры использования нового типа struct tovar для создания различных объектов:

struct tovar book; //переменная-структура с именем book

struct tovar sklad2[1000]; //массив структур с именем sklad2

struct tovar *point_f; // указатель на структуру tovar с именем point_f

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

В следующем примере инициализируются переменные birthday (тип struct date) и food (тип struct tovar):

char sname[]="масло";

struct date birthday={20,"февраля", 1975};

struct tovar food ={&sname, 20.6, 50, {11, "марта", 2011}};

При определении разрешается вкладывать структуры друг в друга. Следующий пример демонстрирует использование вложенных структур.

Пример 5. В примере определяется структура man, для хранения информации о человеке – имя, фамилия, дата рождения, ИНН.

struct man

{char name[20], fam[30];

struct date bd;

int INN;

};

Структура man включает 4 элемента name, fam, bd, INN. Первые два – это символьные массивы различной длины, переменная bd представлена составным элементом (вложенной структурой) типа date, а переменная INN – это целое число типа int. Определенный выше тип date имеет три элемента – day, month, year. Теперь можно определить объекты, значения которых принадлежат новому типу:

struct man list[100];

Здесь определен массив list, состоящий из 100 структур типа man.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]