Скачать ZIP архив | Скачать RAR архив

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

Объявление и определение структур

Ключевое слово struct указывает начало определния структуры. За этим ключевым словом должно следовать имя структуры. Это же правило относится и к другим нестандартным типам данных, которые создаются программистом. Имя структуры называют ее меткой (тег), а также именем структурного типа.

struct coord { //начало определния структуры
int x;
int y;
};

Объявление структуры и ее членов само по себе не создает фактического объекта — структуры coord или ее переменных x и y

При этом не выделяется память для фактических структур.

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

struct coord {
int x;
int y;
} first, second; // определение структур

struct coord {
int x;
int y;
};

struct coord first, second; // определение структур отдельно от манифеста

Обращение к полям структуры

first.x = 50;
second.y = 100;

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

first = second;

first.x = second.x;
first.y = second.y;

Сложные структуры

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

struct rectangle {
struct coord topleft;
struct coord topbottom;
};

Структурный тип rectangle включающий две структуры coord, опредлеение типа и объявление его экземпляров можно совместить:

struct rectangle {
struct coord topleft;
struct coord topbottom;
} myBox;

Для обращения к полям, где хранятся числовые даенные, необходимо два раза применить точку:

myBox.topleft.x; // обращение к полю х поля topleft структуры типа rectangle имеющией имя myBox

myBox.topleft.x = 0;
myBox.topleft.y = 10;
myBox.topleft.x = 100;
myBox.topleft.y = 200;

Структуры, содержащие массивы

Можно определять структуры, содержащие массивы в качестве своих элементов (полей). Мкассивы могут быть любых типов (int, char, итд)

Например, в следующем фрагменте кода определяется структурный тип data содержащий целочисленный массив х из четырех дэлементов и символьный массив у из десяти элементов:

struct data {
int x[4];
char y[10];
};

struct data record; // объявление переменной record этого структурного типа

record.x[2] = 100;
record.y[2] = ‘x’;

record.y;