Udostępnij za pośrednictwem


Deklaracje Unii

"Deklaracja Unii" Określa zestaw wartości zmiennych i, opcjonalnie, znacznik nazewnictwa Unii.Wartości zmiennej są nazywane "Członkowie" Unii i mogą mieć różne typy.Związki są podobne do "wariantu rekordów" w innych językach.

Składnia

  • Specyfikator struct lub Unii:
    Identyfikator struct lub Unii opt**{** deklaracjach struct }

    Identyfikator struct lub Unii

  • struct lub Unii:
    struct

    Unia

  • struct deklaracjach:
    Deklaracja struct

    Deklaracja struct struct deklaracji listy

Zawartość Unii jest zdefiniowany jako

  • Deklaracja struct:
    listy qualifier specyfikatora w struct listy; niewłaściwy deklarator ;

  • listy qualifier specyfikatora:
    Specyfikator typu w specyfikatora listy kwalifikator opt

    Typ kwalifikatora w specyfikatora listy kwalifikator opt

  • struct; niewłaściwy deklarator listy:
    niewłaściwy struct deklarator

    struct; niewłaściwy deklarator listy , ; niewłaściwy struct deklarator

Zmienna z Unii typu przechowuje jedną z wartości zdefiniowanych przez tego typu.Te same zasady regulujące deklaracji struktury i Unii.Związki można również mieć bit pola.

Zrzeszone w związkach nie może mieć niekompletnemu typowi, wpisz void, lub typ funkcji.Dlatego Członkowie nie może być wystąpieniem Unii, ale może być wskaźniki Unii typu zostały zgłoszone.

Deklaracja typu Unii jest tylko szablon.Pamięci nie jest zastrzeżone, dopóki nie jest zadeklarowana zmienna.

[!UWAGA]

Jeżeli zadeklarowano Unii z dwóch typów i jedną wartość jest przechowywana, ale Unii jest uzyskiwany z innego typu, wyniki są wiarygodne.Na przykład w Unii, z pływaka i int jest zadeklarowany.A pływaka wartość jest przechowywana, ale program uzyskuje dostęp później do wartości jako int.W takim przypadku wartość będzie zależeć od wewnętrznej pamięci masowej z pływaka wartości.Wartość całkowita nie byłyby wiarygodne.

Przykłady

Oto przykłady związków:

union sign   /* A definition and a declaration */
{
    int svar;
    unsigned uvar;
} number;

W tym przykładzie definiuje zmienną Unii z sign typu i deklaruje zmienną o nazwie number , ma dwa elementy: svar, liczba całkowita ze znakiem, i uvar, nieoznaczoną liczbę całkowitą.Deklaracja ta umożliwia bieżącą wartość number mają być przechowywane jako podpisanego lub wartość bez znaku.Tag skojarzonego z tym typem Unii jest sign.

union               /* Defines a two-dimensional */
{                   /*  array named screen */
    struct    
    { 
      unsigned int icon : 8;  
      unsigned color : 4;
    } window1;
    int screenval;
} screen[25][80];

screen Tablica zawiera elementy 2 000.Każdy element tablicy jest poszczególnych Unii, z dwóch członków: window1 i screenval.window1 Członek jest struktura z dwóch członków pole bitowe, icon i color.The screenval member is an int.W danej chwili każdy element Unii posiada albo int reprezentowane przez screenval lub strukturę, reprezentowana przez window1.

Programu Microsoft

Zagnieżdżone związków może być deklarowana anonimowo, gdy są oni członkami innej struktury lub Unii.Jest to przykład Unii nameless:

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 */

Związki często są zagnieżdżone wewnątrz struktury, zawierającym pole, podając typ danych zawartych w Unii w określonej godzinie.Jest to przykład deklaracji dla takich Unii:

struct x
{
    int type_tag;
    union
    {
      int x;
      float y;
    }
}

Zobacz struktury i członkami Unii uzyskać informacji o odwoływaniu się do związków.

KONIEC Microsoft szczególne

Zobacz też

Koncepcje

Declarators i deklaracje zmiennych