Куча (структура данных)
- 1 year ago
- 0
- 0
В информатике объединение ( англ. union ) представляет собой значение или структуру данных , которое может иметь несколько различных представлений .
В сильно типизированных языках тип объединение соответствует понятию тип-сумма из теории типов , то есть требует использовать разные конструкторы для значений разных типов .
В слабо типизированных языках, таких как C и C++ , тип объединение реализует каламбур типизации , то есть обеспечивает интерпретацию одного и того же значения в соответствии с разными типами .
В зависимости от конкретного языка и типа , значение объединения может использоваться в таких операциях как присваивание или сравнение в отрыве от информации о конкретном типе или с требованием её наличия.
union Some {
int i;
double a;
};
Это объединение хранит либо
целое число
(
переменная
i
), либо
число с плавающей точкой
(переменная
a
). В
Cи
и
C++
объединение реализовано как разновидность
структуры
, к нему обращаются так же, как и к
структуре
: через символ «
->
» при использовании
указателя
, или «
.
» при использовании обычной
переменной
.
Можно усложнить пример, сделав объединение частью структуры , и тогда обращаться надо будет уже через структуру , то есть:
struct STRX {
int i;
Some v, *w;
} a, *b;
Рассмотрим способы обращения к объединению, заданные через указатели , переменные и смешанным образом:
a.v.i = 123;
b->v.i = 123;
a.w->i = 123;
b->w->i = 123;
Есть возможность сделать объединение безымянным:
struct STRX {
int j;
union {
int i;
double a;
};
} a;
При этом обращение упрощается:
a.i = 123;
a.a = 4.5;