Кафедра: Автоматика и Информационные Технологии
Структуры и объединения
СОДЕРЖАНИЕ
1. СТРУКТУРЫ Основные сведения о структурах Структуры и функции Указатели на структуры Массивы структур 2. ОБЪЕДИНЕНИЯ 3. ПРАКТИЧЕСКИЕ ЗАДАНИЯ Задание 3.1 Задание 3.2. Задание 3.3. 4. ЛАБОРАТОРНЫЕ ЗАДАНИЯ 5. ДОПОЛНИТЕЛЬНЫЕ ЗАДАНИЯ Задание 5.1. Задание 5.2. Задание 5.3. БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Структуры Структура - это именованная совокупность переменных возможно разных типов, расположенная в памяти последовательно друг за другом. Структуры называются пользовательскими типами данных и помогают в организации сложных данных, поскольку позволяют группу связанных между собой переменных трактовать не как множество отдельных элементов, а как единое целое.
Традиционный пример структуры - строка платежной ведомости. Она содержит такие сведения о служащем, как его полное имя, адрес, номер карточки социального страхования, зарплата и т. д. Некоторые из этих характеристик сами могут быть структурами: например, полное имя состоит из нескольких компонент (фамилии, имени и отчества); аналогично адрес, и даже зарплата. Другой пример (более типичный для Си) - из области графики: точка есть пара координат, прямоугольник есть пара точек и т. д.
Главные изменения, внесенные стандартом ANSI в отношении структур, - это введение для них операции присваивания. Структуры могут копироваться, над ними могут выполняться операции присваивания, их можно передавать функциям в качестве аргументов, а функции могут возвращать их в качестве результата. В большинстве компиляторов уже давно реализованы эти возможности, но теперь они точно оговорены стандартом. Для допускается инициализация.
Основные сведения о структурах
Объявление структуры начинается с ключевого слова struct и содержит список объявлений, заключенный в фигурные скобки:
struct имя_структуры {
список объявлений;
};
имя_структуры иногда называют тегом структуры.
Перечисленные в структуре переменные называются элементами. Элементами структур могут быть:
- переменные и массивы базовых типов,
- переменные и массивы пользовательских типов, кроме типа самой структуры имя_структуры,
- указатели на любые типы, включая и тип самой структуры имя_структуры,
- функции.
Включение в структуры элементов-функций не является общепринятым. Как правило, в этом случае переходят к понятию класса.
Элементы структур являются публичными, то есть к элементам структурных переменных можно обращаться в любом месте области видимости этих переменных.
Приведем пример структуры time:
struct time {
int hour;
int minutes;
};
В нашем примере элементами структуры будут hour и minutes.
Объявление структуры не резервирует памяти. Оно является информацией компилятору о введении пользовательского типа данных. Память выделится при определении структурных переменных.
Если структурный тип в программе больше не будет использоваться, объявляют безымянную структуру одновременно с определением переменной. Например,
struct {
int x, y;
} q;
Однако если структура имеет тег, то этим тегом далее можно пользоваться при определении структурных объектов. ............