Prohlášení unie
"Unie prohlášení" Určuje sadu hodnot proměnných a případně značky pojmenování unie.Hodnoty proměnných se nazývají "členové" unie a mohou mít různé typy.Odbory jsou podobné "varianty záznamy" v jiných jazycích.
Syntaxe
Struktura nebo unie specifikátor:
identifikátor unie nebo struct opt**{** struct prohlášení seznam }identifikátor struct nebo unie
unie nebo struct:
Strukturaunie
Struktura prohlášení seznam:
Struktura prohlášeníStruktura prohlášení seznamu struct prohlášení
Unie obsah je definován jako
prohlášení struct:
Struktura seznamu kvalifikátorů specifikátor declarator seznamu ;Specifikátor kvalifikátor seznam:
Specifikátor specifikátor typu kvalifikátor seznam optspecifikátor typu kvalifikátor kvalifikátor seznam opt
Struktura declarator seznamu:
Struktura declaratorStruktura declarator seznamu , declarator struktura
Proměnná s unie typu ukládá jednu z hodnot podle typu.Stejná pravidla určují strukturu a unie prohlášení.Sdružení může mít také bit pole.
Členy sdružení nemůže mít neúplný typ zadejte void, nebo typ funkce.Členové proto nemůže být instance unie ale může být ukazatele typu union probíhá.
Prohlášení unie typu je pouze šablona.Dokud je deklarována proměnná není vyhrazena paměti.
[!POZNÁMKA]
Unie dva typy je deklarována jedna hodnota je uložena, ale s jiným typem přístupu k unii, nespolehlivé výsledky.Například unie o plovoucí a int je deklarována.A plovoucí hodnota je uložena, ale program přistupuje k vyšší hodnotu, jako int.V takové situaci by hodnota závisí na vnitřní skladování plovoucí hodnoty.Celočíselná hodnota by spolehlivé.
Příklady
Příklady svazů:
union sign /* A definition and a declaration */
{
int svar;
unsigned uvar;
} number;
Tento příklad definuje proměnné unie s sign zadejte a deklaruje proměnnou pojmenovanou number , má dva členy: svar, znaménkem, a uvar, celé číslo bez znaménka.Toto prohlášení umožňuje aktuální hodnotu number bude uložen jako podepsané nebo hodnotu bez znaménka.Označení spojené s tímto typem unie je sign.
union /* Defines a two-dimensional */
{ /* array named screen */
struct
{
unsigned int icon : 8;
unsigned color : 4;
} window1;
int screenval;
} screen[25][80];
screen Matice obsahuje prvky 2 000.Každý prvek pole je jednotlivým unie se dvěma členy: window1 a screenval.window1 Člen je struktura se dvěma členy bitového pole icon a color.The screenval member is an int.V daném okamžiku každý element union drží buď int reprezentované screenval nebo struktury reprezentované window1.
Konkrétní společnosti Microsoft
Vnořené odbory lze deklarovat anonymně při jsou členy jiného struktury nebo unie.Toto je příklad nameless unie:
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 */
Odbory jsou často vnořené struktury, který obsahuje pole udávající typ dat obsažených v unii v kterémkoli okamžiku.Toto je příklad prohlášení pro takové unie:
struct x
{
int type_tag;
union
{
int x;
float y;
}
}
Viz struktury a členy svazu informace o odkazování na odbory.
Konec konkrétní společnosti Microsoft