Объединение (структура данных)
| Эту статью следует викифицировать.
Пожалуйста, оформите её согласно правилам оформления статей.
|
Объединение (англ. union) в программировании — структура данных, члены которой расположены по одному и тому же адресу. Поэтому размер объединения равен размеру его наибольшего члена. В любой момент времени объединение хранит значение только одного из членов.
[править] Пример на C++
union Some {
int i;
double a;
};
Это объединение хранит либо целое число (переменная i), либо число с плавающей точкой (переменная a). Поскольку объединение — это вид структуры, то в C и C++ к нему обращаются так же, как и к структуре: через символ «->» при использовании указателя, или «.» при использовании обычной переменной.
Можно усложнить пример, сделав объединение частью структуры, тогда обращаться надо будет уже через структуру, то есть:
struct STRX {
int j;
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;
| Типы данных | |
|---|---|
| Неинтерпретируемые | |
| Числовые | |
| Текстовые | |
| Указатель | |
| Композитные |
Алгебраический тип данных (обобщённый) • Массив • Ассоциативный массив • Класс • Список • Кортеж • Объект • Option type • Product • Структура • Множество • Объединение (tagged) |
| Другие |
Логический • Низший тип • Коллекция • Перечисляемый тип • Исключение • First-class function • Opaque data type • Recursive data type • Семафор • Поток • Высший тип • Type class • Unit type • Void |
| Связанные темы | |