Тема 3.6. Объединения

Объединения – это структурированный тип данных, который может, как и структура, хранить разнородные данные. Однако в случае объединений данные занимают одну и ту же область памяти.

На диаграмме, представленной ниже показано расположение в памяти полей структуры s_worker и объединения u_worker. В случае структуры, поля расположены в памяти друг за другом, то есть как только заканчивается память, выделенная для поля salary, начинается область памяти, выделенная для поля taxes. В случае объединения, области всех полей начинаются в одном месте.

Поля объединения накладываются друг на друга. Общий объем занимаемой памяти равен размеру самого большого поля.Изменение значения любого поля объединения меняет значения других полей.

Преимущество использования объединений в экономии оперативной памяти. Кроме того, объединения позволяют создавать весьма специфические типы данных. Например, вместо того, чтобы пересылать по сети четыре значения от 0 до 255 (1 байт) можно преобразовать их к целому беззнаковому типу (int занимает 4 байта) и передать лишь одно значение. Затем на компьютере-получателе вновь разрезать целоне на части.

Использование битовых карт

В первом разделе было сказано, что структура, поля которой могут хранить лишь один бит называются битовыми картами. Рассмотрим как можно использовать такие структуры. Напомним как выглядит битовая структура байта:

Создадим объединение, которое будет использовать данную структуру для двоичного представления кода символа.

Пример результата работы данной программы: