Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_dlya_podgotovki_k_ekzamenu_po_distsipli...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
607.23 Кб
Скачать
  1. Структуры. Объявление. Выбор элементов структуры. Использование указателей на структуры.

Структурой в языке C называется совокупность логически связанных переменных различных типов, сгруппированных под одним именем для удобства дальнейшей обработки.

Объявление переменной структурного типа имеет следующий вид:

struct ID var1;

при этом в программе создается переменная с именем var1 типа ID. Все переменные, использующие один шаблон (тип) структуры, имеют одинаковый набор полей, однако различные наборы значений, присвоенные этим полям. При объявлении переменной происходит выделение памяти для размещения переменной. Шаблон структуры позволяет определить размер выделяемой памяти.

Указатели на структуру

Если функции передается большая структура, то эффективнее передать указатель на эту структуру, нежели копировать ее в стек целиком. Указатель на структуру по виду ничем не отличается от указателей на обычные переменные.

Формат: struct point *pp;

где pp – указатель на структуру типа struct point, *pp – сама структура, (*pp).x и (*pp).y – члены структуры.

Скобки (*pp).x необходимы, так как приоритет операции (.) выше приоритета операции (*). В случае отсутствия скобок *pp.x понимается как *(pp.x).

Инициализация указателя на структуру выполняется так же, как и инициализация указателей других типов: struct point var1, *S1; здесь var1 – структурная переменная, *S1 – указатель на структуру.

Для определения значения указателя ему нужно присвоить адрес уже сформированной структуры:

S1 = &var1;

Указатели на структуру используются в следующих случаях:

·     доступ к структурам, размещенным в динамической памяти;

·     создание сложных структур данных – списков, деревьев;

·     передача структур в качестве параметров в функции.

  1. Объединения. Их объявление.

Для объявления объединений в C используют ключевое слово union. Объединение в C может содержать объявления полей разных типов, кроме типа самого данного объединения. Особенностью объединения в Си является то, что все поля объединения имеют одинаковый адрес в памяти. Это приводит к тому, что в данный момент можно определить значение только одного поля объединения в Си.

Объявить объединение в Си означает описать новый тип данных. И каков этот тип? union myUnion. Объявим и определим переменную uUnion типа union myUnion:

union myUnion uUnion = {150};

инициализировать можно только первую переменную объединения в C.

Память для объединения выделяется по размеру самого длинного поля, в примере это поле типа double.

Пример на C++

union Some {

int i;

double a;

};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]