ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. Объединение (union) – это тип, который позволяет хранить различные типы данных в одном пространстве памяти (но не одновременно) [1].
1.1. Объединения Объединение (union) – это тип, который позволяет хранить различные типы данных в одном пространстве памяти (но не одновременно) [1]. Объединения образуются во многом подобно структурам. Существуют шаблоны объединений и переменные типа объединения. Они могут быть определены с помощью одного или двух действий, причем в последнем случае используется дескриптор объединения [1]. Пример шаблона объединения с дескриптором hold: union hold { int digit; double bigf; char letter; }; Объединение может хранить значение тип int, double, char. Структура с такими же полями способна хранить все типы одновременно. Пример определения трех переменных объединения: Union hold fit; // переменная объединения типа hold Union hold save[10]; // массив из 10 переменных объединения Union hold *ptr; // указатель на переменную типа hold Первое объявление определяет единственную переменную fit. Компилятор выделяет пространство памяти, достаточное для того, чтобы хранить наибольший из описанных вариантов, а именно тип double, который требует обычно 8 байт. Второе объявление save[10] создает массив с 10 элементами, каждый из которых имеет размер в 8 байт. В третьем объявлени указатель может содержать адрес объединения hold. Рассмотрим варианты инициализации объединения [1]:
|