Определение объединений
Все компоненты объявления структур, такие как шаблоны, имена типов, имена элементов и т.д. применимы и при объявлении объединений. Единственное отличие состоит в том, что при объявлении объединения вместо ключевого слова struct используется union.
Синтаксис:
union [ИмяОбъединения] {
ОпределенияЭлементов;
} ОбозначениеОбъединения;
где union – спецификатор типа;
ИмяОбъединения – идентификатор;
ОпределенияЭлементов – совокупность описаний объектов, каждый из которых служит прототипом одного из элементов объединений.
Например:
union {
char hh[2];
int ii;
} CC;
Главной особенностью объединения является то, что для каждого из объявленных элементов выделяется одна и та же область памяти, т.е. они перекрываются. Хотя доступ к этой области памяти возможен с использованием любого из элементов, элемент для этой цели должен выбираться так, чтобы полученный результат не был бессмысленным.
Как и для структурных типов, с помощью typedef можно вводить обозначения объединяющих типов.
Синтаксис:
typedef union [ИмяОбъединения]
{
ОпределенияЭлементов;
} ОбозначениеОбъединения;
Например:
typedef union uni {
double d;
int i[4];
char ch[8];
} u_name;
На основе такого определения типа можно вводить конкретные объединения двумя способами:
union uni a, b;
u_name x, y;
Объединение применяется для следующих целей:
· инициализации используемого объекта памяти, если в каждый момент времени только один объект из многих является активным;
· интерпретации основного представления объекта одного типа, как если бы этому объекту был присвоен другой тип.
Доступ к элементам объединения (полям данных)
Для обращения к элементу объединения используются те же конструкции, что и для обращения к элементу структуры:
ИмяОбъединения.ИмяЭлемента
(* УказательНаОбъединение).ИмяЭлемента
УказательНаОбъединение->ИмяЭлемента
Например:
СС.hh
(*pin).mas
pin–>mas
Дата добавления: 2015-02-16; просмотров: 493;