Объединениями называют сложный тип данных, позволяющий размещать в одном и том же месте оперативной памяти данные различных типов.
Размер оперативной памяти, требуемый для хранения объединений, определяется размером памяти, необходимым для размещения данных того типа, который требует максимального количества байт.
Когда используется элемент меньшей длины, чем наиболее длинный элемент объединения, то этот элемент использует только часть отведенной памяти. Все элементы объединения хранятся в одной и той же области памяти, начиная с одного адреса.
Общая форма объявления объединения
union ИмяОбъединения
{
тип ИмяОбъекта1;
тип ИмяОбъекта2;
. . .
тип ИмяОбъектаn;
};

Объединения применяются для следующих целей:
§ для инициализации объекта, если в каждый момент времени только один из многих объектов является активным;
§ для интерпретации представления одного типа данных в виде другого типа.
Пример Поменять местами два младших байта во введенном числе
#include <stdio.h>
#include <stdlib.h>
int main() {
char temp;
system("chcp 1251");
system("cls");
union
{
unsigned char p[2];
unsigned int t;
} type;
printf("Введите число: ");
scanf("%d", &type.t);
printf("%d = %x шестн.\n",type.t, type.t);
// Замена байтов
temp = type.p[0];
type.p[0] = type.p[1];
type.p[1] = temp;
printf("Поменяли местами байты, получили\n");
printf("%d = %x шестн.\n",type.t, type.t);
getchar(); getchar();
return 0;
}
Результат выполнения
