Объединение (union)- это частный случай структуры. Все поля объединения располагаются по одному и тому же адресу. Длина объединения равна наибольшей из длин его полей. В каждый момент времени в такой переменной может храниться только одно значение. Объединения применяют для экономии памяти, если известно, что более одного поля не потребуется. Также объединение обеспечивает доступ к одному участку памяти с помощью переменных разного типа.
Пример
union{
char s[10];
int x;
}u1;
. . . . | |||||||||
x- занимает 2 байта | |||||||||
S – занимает 10 байтов |
Рис.3. Расположение объединения в памяти
И s, и x располагаются на одном участке памяти. Размер такого объединения будет равен 10 байтам.
Пример1:
//использование объединений
enum paytype{CARD,CHECK};//тип оплаты
struct{
paytype ptype;//поле, которое определяет с каким полем объединения будет
// выполняться работа
union{
char card[25];
long check;
};
}info;
switch (info.ptype)
{
case CARD:cout<<” Оплата по карте:”<<info.card;break;
case CHECK:cout<<” Оплата чеком:”<<info.check;break;
}