Объединение (union) является хранилищем для различных типов данных в одной области памяти. Благодаря использованию объединений вместо структур можно немного сэкономить память в том случае, если доподлинно известно, что в каждый момент времени будет использоваться лишь одно из полей объединения. В объединениях могут храниться даже структуры, не говоря о переменных базовых типов. На этапе компиляции программы компилятор вычисляет объем памяти, занимаемый наибольшим элементом объединения, а не всеми элементами, как это происходит в случае структуры.
Для того, чтобы помнить, какое из полей объединения используется в тот или иной момент времени, объединение обычно помещается в структуру вместе с целочисленной переменной, хранящей идентификатор его используемого поля.
Объединение объявляется почти так же, как и структура:
union software
{
char *name;
float version;
};
Для работы с объединением для начала следует объявить соответствующую переменную:
union software firefox;
Значения полей устанавливаются таким же образом, как и в случае структур:
software.name = "Firefox";
software.version = 39.0.1;
Работа с данными из объединения.