Структуры
Работа с массивами облегчает понимание и написание программы, когда для обозначения похожих элементов используется один идентификатор. Однако в ряде случаев приходится обрабатывать разнородные элементы, описывающие один объект. В этом случае вместо массива используется структура.
Cтруктура - это составной объект, в который входят элементы любых типов, за исключением функций. В отличие от массива, который является однородным объектом, структура может быть неоднородной. Тип структуры определяется записью вида:
struct { список описаний}
В структуре обязательно должен быть указан хотя бы один компонент. Компоненты структуры называются полями структуры. Объявление полей производится в следующем виде:
тип-данных описатель;
где тип-данных указывает тип структуры для объектов, определяемых в описателях. В простейшей форме описатели представляют собой идентификаторы переменных или массивов.
Пример объявления структур:
struct//Описание типа структуры------------------------- {char tzvet,//Цвет точки int x, //Координата X y; //Координата Y }//------------------------------------------------------ tochka1, tochka2, //Переменные, обозначающие точки дисплея simv[7][9]; //Переменная, содержащая рисунок символа struct {int year; //Поле структуры, в котором хранится год char moth, //Поле структуры, в котором хранится месяцday; //Поле структуры, в котором хранится день }//------------------------------------------------------- date1, date2;//Переменные, обозначающие две различных даты
Переменные tochka1, tochka2 объявляются как структуры, каждая из которых состоит из трех полей tzvet, х и у. Переменная simv объявляется как двумерный массив, состоящий из 63 переменных, описывающих точку дисплея. Во втором объявлении каждая из двух переменных date1, date2 состоит из трех компонентов year, moth, day.
Существует и другой способ связывания имени переменной с типом структуры, он основан на использовании отдельного объявления типа структуры. Тип структуры описывается следующим образом:
struct тип-структуры { список описаний; };
где тип-структуры является идентификатором типа объявляемой структуры и может быть использован для последующего объявления структур данного вида (то есть содержащих точно такие же поля) в форме:
struct тип-структуры список-идентификаторов;
В приведенном ниже примере идентификатор student описывается как тип структуры:
struct student {char name[25];//Имя и фамилия студента int id, //Номер в журнале age; //Возраст char usp; //успеваемость };Пример:
struct student st1[23];//объявление массива переменных типа студент
Доступ к компонентам структуры осуществляется с помощью указания имени структуры и следующего через точку имени выделенного компонента, например:
st[1].name="Иванов"; st[1].id=2; st[1].age=23;