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:
structUnia
struct deklaracjach:
Deklaracja structDeklaracja 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 optTyp kwalifikatora w specyfikatora listy kwalifikator opt
struct; niewłaściwy deklarator listy:
niewłaściwy struct deklaratorstruct; 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