Sdílet prostřednictvím


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:
    Struktura

    unie

  • 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 opt

    specifikátor typu kvalifikátor kvalifikátor seznam opt

  • Struktura declarator seznamu:
    Struktura declarator

    Struktura 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

Viz také

Koncepty

Declarators a deklarace proměnných