Глава 10. Структуры

Из базовых типов и типов, определенных программистом, можно формировать производные типы, к которым относятся указатели, массивы, структуры, объединения и функции. Базовые типы (int, float, …) считаются скалярными типами. Массивы и структуры являются агрегирующими типами, так как состоят из набора элементов. Массив состоит из однотипных элементов, а структуры могут содержать разнотипные элементы [24].

Структура – это объединение в единое целое множества поименованных элементов (компонентов) данных. В отличие от массива, в котором компоненты имеют один и тот же тип, компоненты структуры могут иметь различные типы.

Формат объявления структурного типа:

struct имя_структурного_типа {

Определение_компонентов_структуры

};

Здесь struct – спецификатор структурного типа;

имя_структурного_типа – произвольно выбираемый идентификатор;

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

Еще одну возможность введения структурного типа дает служебное слово typedef, позволяющее ввести собственное обозначение для любого определения типа. В случае структурного типа он может быть введен и поименован следующим образом:

typedef struct {

Определение_компонентов_структуры

} имя_структурного_типа_1;

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

typedef struct имя_структурного_типа {

Определение_компонентов_структуры

} имя_структурного_типа_1;

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

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

имя_структурного_типа список_имен_объектов;

В качестве примера иллюстрации выделения памяти рассмотрим структуру вида [24]:

struct goods{

char* name; // Название

long price; // Цен а

float percent; // Процент скидки

char date[9]; // Дата в символьном формате

};

Введем объект типа struct goods:

struct goods coat;

В табл. 10.1 приведено распределение памяти, выделяемой под объект coat.

Таблица 10.1


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



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