История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Оснащения врачебно-сестринской бригады.
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2018-01-03 | 204 |
5.00
из
|
Заказать работу |
|
|
Структуры объединяют под одним именем несколько переменных, возможно разных типов.
1.struct [имя типа структуры]{список элем структуры}[описатель [,описатель]]…;
2.struct имя типа структуры описатель[,описатель]…;
Объявление структуры задаёт имена переменных структуры и последовательность переменных величин, называемых элементами структуры(членами структуры или полями структуры).Причем каждое поле может иметь свой тип.
В формате 1 список элем задаёт типы элементов структуры и их имена. Имя типа структуры задаёт тип структуры, который далее может служить кратким обозначением декларации, заключённой в фигурные скобки.
В формате 2 используется имя типа структуры, которое уже было определено где-то раньше в программе.
Имена типов структур и отдельных элементов могут совпадать с именами обычных переменных, кроме того, одни и те же имена допускаются в различных структурах, но в одной структуре имена должны быть уникальными. Имена типов структур должны отлич от других типов структур, объединений в той же области видимости.
Описатель именует переменную типа struct и может быть обычной перем, указателем, массивом или ф-цией.
Список объявл элем содержит одну или несколько объявлений переменных или полей битов. Объявл не могут содержать специф класса памяти элем структ. и нач значений элем. Элем структур могут быть элем любого основного типа, массивами, структурами, объединениями и указателями.
struct student {char name[30];
int kurs;
char group [8];}
Компилятор выделяет память под каждую переменную, равную сумме длин всех полей. Не всегда это правило выполняется из-за выравнивания объектов различной длины, поэтому могут появиться дыры.
struct a{char c;int b;} l; - 4 байта
|
Задание шаблона и объявление переменной можно производить одновременно.
Доступ к элементу структуры осуществляется с помощью операции точка: имя_структуры. имя_переменной
Структуры могут быть вложены друг в друга. Поле, являющееся структурой, является вложеной структурой. Шаблон вложеной структуры должен быть известен компилятору.
struct pt{int x; int y;};
struct a{struct pt,p1; struct p1,p2;}
Ссылка на поле вложенной структуры формируется из имени структуры переменной, имени структурного поля и имени поля вложенной структуры: screen.p1.x
Ограничение на вложение структур: структура не может вкладываться сама в себя.
Операции над структурами
Возможны следующие операции над структурами:
1.Копирование
2.Присваивание (передача структур в функции и возврат их в качестве результата также относится к операции присваивания)
3.Взятие адреса
4.Осущ доступа к переменной
Структуры. Операции над структурами
Структуры нельзя сравнивать. Если объявлены две структ перем с одним шаблоном, то можно написать stud1=stud2; если они имеют один тип. Нельзя использовать операцию присваивания для структур, шаблоны которых под разным, хотя и идентичными, именами.
ПР: main()
{struct first{int a;
char b;};
struct second{int a;
char b;};
struct first a;
struct second b;
a.a=1,a.b=’f’;
b.a = a.a;
b.b = a.b
}
Шаблон имеет область видимости. Если шаблон объявлен внутри блока – локальный шаблон. Если шаблон объявлен вне блока, то он видим во всех ф-циях от точки объявления до конца файла. Нельзя описывать шаблон с реквизитом extern.
Переменная типа структуры также может быть локальной, глобальной и формальным параметром ф-ции.
При использовании структурных переменных в качестве параметров ф-ций используют 3 подхода:
1.Передавать элементы структурных переменных по отдельности
2.Передавать структуру целиком
3.Передавать указатель на структуру
Если передаётся структура по значению, то все элементы структуры заносятся в стек. Если структура большая, то стек может переполниться. При передаче по ссылке вся структура не копируется, а в стек заносится только адрес структуры. Можно объявить указатель на структуру: struct student *p;
|
Поскольку указатель на структуру используется часто то для доступа к её элементам существует ещё один способ – операция стрелка “->”.Операция ‘->’ и ‘.’ имеют одинаковый приоретет и вместе с операциями () и [] имеют наивысший приоритет.
Для доступа к структурам, размещенных динамич образом, для передачи в функции используют указатели.
|
|
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!