Объявления соединения
"Объявление соединения" определяет набор значений переменных и, при необходимости, тега именования соединение.Значения переменных называется "члены" объединение и могут содержать различные типы.Объединения аналогичны "другим записям" в других языках.
Синтаксис
структура-или-соединени-описатель.
идентификатор структура-или-соединенияOpt**{** структура-объявление-список }идентификатор структура-или-соединения
структура-или-соединение.
structunion
структура-объявление-список.
структура-объявлениеструктура-объявление структура-объявление-списка
Содержимое соединения указано как
структура-объявление.
структура-декларатор-список описатель-квалификатор-списка ;описатель-квалификатор-список.
описатель-квалификатор-список тип-описателя Optописатель-квалификатор-список тип-квалификатора Opt
структура-декларатор-список.
структура-деклараторструктура-декларатор-список " структура-декларатор
Переменная с union тип хранит одно из значений, определенных этим типом.Те же самые правила, управляющие структуры и объединения.Соединения также могут иметь битового поля.
Члены соединений не могут иметь неполный тип, тип voidили тип функции.Поэтому члены не могут быть экземпляром соединения, но могут быть указателями в объявлянными типу соединения.
Объявление типа соединения только шаблон.Память не зарезервировано до тех пор, пока переменная не объявлена.
![]() |
---|
Если соединение объявлено одно значение 2 типов и сохраняется, но соединение осуществляется с другим типом, результаты ненадежны.Например, соединение Плавающая область и int объявляет.A Плавающая область значение сохраняется, но более поздних версиях программа подключается к значение как int.В такой ситуации значение о зависит от внутреннее хранилище Плавающая область значения.Целое значение не было бы быстро. |
Примеры
Следующие примеры соединений.
union sign /* A definition and a declaration */
{
int svar;
unsigned uvar;
} number;
В этом примере задается переменная соединения sign введите и объявите переменную с именем number то есть 2 элемента. svar, знаковое целое число. uvarцелое число без знака.Это объявление разрешает текущее значение number храниться как значение со знаком или без знака.Тег, связанный с этим типом соединения sign.
union /* Defines a two-dimensional */
{ /* array named screen */
struct
{
unsigned int icon : 8;
unsigned color : 4;
} window1;
int screenval;
} screen[25][80];
screen массив содержит 2.000 элементов.Каждый элемент массива отдельное соединение с 2 элементами: window1 и screenval.window1 элемент структура с элементами бит-поля, 2 icon и color.screenval элемент int.В любой момент времени хранится то каждый элемент соединения int представляет by screenval или структура, представленная by window1.
Только для систем Microsoft
Вложенные соединения можно объявить анонимно при их члены других структуры или объединения.Это пример безыменного соединения:
struct str
{
int a, b;
union / * Unnamed union */
{
char c[4];
long l;
float f;
};
char c_array[10];
} my_str;
.
.
.
my_str.l == 0L; /* A reference to a field in the my_str union */
Объединения часто являются вложенными в структуре, которая включает поле, задающего тип данных, содержащихся в соединении на определенном времени.Это пример объявления для этого соединения.
struct x
{
int type_tag;
union
{
int x;
float y;
}
}
См. Структура и члены объединения дополнительные сведения о ссылках на соединения.
ЭЛЕМЕНТ, относящийся Майкрософт