25 Структуры в языках программирования высокого уровня. Обращение к полям структуры Структура - это совокупность нескольких переменных под единым именем, рассматриваемых как одно целое. В отличиие от массива переменные в структуре могут иметь различные типы. Переменные внутри структуры называются ее членами или полями. Структуры могут содержать данные любых мыслимых типов С, в том числе массивы и другие структуры. Объявление и определение структур Ключевое слово 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;