Объединение (структура данных)

Поделись знанием:
Перейти к: навигация, поиск

В информатике объединение (англ. union) представляет собой значение[en] или структуру данных, которое может иметь несколько различных представлений.

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

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

В зависимости от конкретного языка и типа, значение объединения может использоваться в таких операциях как присваивание или сравнение в отрыве от информации о конкретном типе или с требованием её наличия.



Пример на Си

union Some {
    int i;
    double a;
};

Это объединение хранит либо целое число (переменная i), либо число с плавающей точкой (переменная a). В и 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;

См. также


К:Википедия:Статьи без источников (тип: не указан)

Напишите отзыв о статье "Объединение (структура данных)"

Отрывок, характеризующий Объединение (структура данных)

Но одни слова не доказали бы, что он тогда понимал значение события. Действия его – все без малейшего отступления, все были направлены к одной и той же цели, выражающейся в трех действиях: 1) напрячь все свои силы для столкновения с французами, 2) победить их и 3) изгнать из России, облегчая, насколько возможно, бедствия народа и войска.
Он, тот медлитель Кутузов, которого девиз есть терпение и время, враг решительных действий, он дает Бородинское сражение, облекая приготовления к нему в беспримерную торжественность. Он, тот Кутузов, который в Аустерлицком сражении, прежде начала его, говорит, что оно будет проиграно, в Бородине, несмотря на уверения генералов о том, что сражение проиграно, несмотря на неслыханный в истории пример того, что после выигранного сражения войско должно отступать, он один, в противность всем, до самой смерти утверждает, что Бородинское сражение – победа. Он один во все время отступления настаивает на том, чтобы не давать сражений, которые теперь бесполезны, не начинать новой войны и не переходить границ России.
Теперь понять значение события, если только не прилагать к деятельности масс целей, которые были в голове десятка людей, легко, так как все событие с его последствиями лежит перед нами.
Но каким образом тогда этот старый человек, один, в противность мнения всех, мог угадать, так верно угадал тогда значение народного смысла события, что ни разу во всю свою деятельность не изменил ему?
Источник этой необычайной силы прозрения в смысл совершающихся явлений лежал в том народном чувстве, которое он носил в себе во всей чистоте и силе его.
Только признание в нем этого чувства заставило народ такими странными путями из в немилости находящегося старика выбрать его против воли царя в представители народной войны. И только это чувство поставило его на ту высшую человеческую высоту, с которой он, главнокомандующий, направлял все свои силы не на то, чтоб убивать и истреблять людей, а на то, чтобы спасать и жалеть их.
Простая, скромная и потому истинно величественная фигура эта не могла улечься в ту лживую форму европейского героя, мнимо управляющего людьми, которую придумала история.
Для лакея не может быть великого человека, потому что у лакея свое понятие о величии.


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