16-07-2023
Объединение (англ. union) в программировании — структура данных, члены которой расположены по одному и тому же адресу. Поэтому размер объединения равен размеру его наибольшего члена. В любой момент времени объединение хранит значение только одного из членов.
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 |
Связанные темы |
Объединение (структура данных).