Объединения

Объединение (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;

}