Лекция 9. Функции, структуры, перечисления (1107984), страница 2
Текст из файла (страница 2)
Структуры9.2.1. Структура – это совокупность нескольких переменных, часто разных типов,сгруппированных под одним именем для удобства. С помощью структур удобноорганизовывать сложные типы данных, так как они позволяют группу переменных,связанных между собой информационно и по размещению в памяти, рассматриватьи обрабатывать как единое целое, а не как разрозненный набор элементов.Переменные, перечисленные в объявлении структуры, называются ее полями,элементами, или членами.9.2.2.
Объявление структуры начинается с ключевого слова struct, за которымследует необязательный идентификатор, называемый меткой структуры, а далее вфигурных скобках перечисляются объявления полей структуры. Пример:структура, описывающая точку на координатной плоскости:struct point {int x;int y;}; f, g;Здесь point – метка структуры 2, x и y – имена полей структуры.Объявление структуры фактически вводит новый тип данных. После объявленияструктуры может стоять список переменных, каждая из которых является именемэкземпляра структуры.
Переменные f и g – это две точки (экземпляры структурыstruct point). Объявления новых экземпляров структуры struct pointможно записать в виде:struct point h, maxpt = {320, 320}Объявление структуры, после которого нет списка переменных, не выделяетникакой памяти для объектов, а просто описывает «шаблон» структуры. Если вобъявлении структуры есть метка, ее можно использовать для сокращенногообозначения структуры.Поля структуры могут иметь любой тип, например, тип массива или тип другойструктуры, или даже тип той же самой структуры.
Например, объявлениеstruct rect {struct point pt1;struct point pt2;};определяет прямоугольник, заданный своей диагональю (pt1 и pt2 – концыдиагонали).2Метка структуры не является ее именем, более того, в функции может быть объявлена переменная, имя которойсовпадает с меткой одной из структур, объявленных в той же функции.(с) Кафедра системного программирования ф-та ВМК МГУ, 20106Лекции по курсу “Алгоритмы и алгоритмические языки”, 1 курс, 1 поток, 2010/2011 уч.год.9.2.3.
Доступ к полям структуры осуществляется с помощью операции точка "."Например, f.x, f.y, g.y и т.п.9.2.4. Массивы структур.9.2.5. Указатели на структуры.9.3. ПеречисленияПеречисления или перечислимые типы относятся к целочисленным типам данных. Онине встроены в язык, а определяются программистом. При определении перечислимоготипа вслед за ключевым словом enum в фигурных скобках задается упорядоченноемножество имен значений путем перечисления этих имен через запятые. Разрешаетсяперед фигурными скобками поставить имя, которое будет трактоваться как имясоответствующего перечислимого типа.
Каждому имени значения присваиваетсяпорядковый номер: первому имени – номер 0, второму – 1 и т.д. Например:enum colors {red, orange, yellow, green, azure, blue, violet};илиenum {red, orange, yellow, green, cyan, blue, violet};Программист может сопоставить каждому имени перечисления целое значение, отличноеот его порядкового номера: enum {red, orange, yellow, green, cyan = 75,blue, violet}; В этом случае порядковые номера значений blue и violet будут,соответственно 76 и 77. Отметим, что можно написать и так:enum {red, orange = 23, yellow = 23, green, cyan = 75, blue =75, violet}; (если программист не видит разницы между оранжевым и желтым, атакже между голубым и синим).Еще примеры:enum months {Jan = 1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,Oct, Nov, Dec};enum Boolean {no, yes}; (если вдруг возникло желание вместо false и trueписать no и yes)Если, например, умножить no на yes, получится 0, а если их сложить – 1.
Имя в типеenum – это сокращение, употребляемое вместо {…}.Перечислимые типы задают наборы целочисленных констант (тип этих констант int).9.4. Средство typedef.(с) Кафедра системного программирования ф-та ВМК МГУ, 20107.