Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Double d;



} A, B; // Описан тип данных t_num и определены две переменные А и В

Обращение к полям объединения осуществляется так же, как и к элементам структуры – с использованием оператора “точка”:

A.i = 13;

B.d = 3.14;

cout << A.i + B.d;

Если обращение к полям объединения осуществляется через указатель, то необходимо использовать оператор “стрелка”:

t_num *p = &A; // Указатель на объединение р инициализирован адресом переменной А

p -> d = 234.33; // Полю d переменной А присвоено новое значение

Передача объединений в качестве аргументов функций осуществляется точно так же, как и для структур.

В памяти члены объединения “накрывают” друг друга (располагаются по одному адресу):

d (double – 8 байт)
i (int – 4 байта)
А

Если вывести на экран адреса переменной А и полей i и d

cout << &A << " " << &A.i << " " << &A.d << endl;

то будут выведены три одинаковых адреса.

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

Например, необходимо написать функцию обеспечивающую перестановку младшего и старшего байта короткого целого:

Short Swap (short I)

{

union t_U {

Short i;

char c [2];

} u;

u.i = I;

char ch = u.c [0];

u.c [0] = u.c [1];

u.c [1] = ch;





Дата публикования: 2014-11-28; Прочитано: 158 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...