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