Скачать 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;