Het uniesleutelwoord
union tag {
union_member(s);
/* de extra verklaringen kunnen hier gaan */
}instance;
Voor van Het uniesleutelwoord wordt gebruikt het verklaren bestelwagen vakbonden. Een unie is een inzameling van één van meerdere variabelen (union_members) matrijs onder één enkele naam zijn gegroepeerd. Bovendien bezet elk van deze unieleden het zelfde gebied bestelwagengeheugen.
De sleutelwoordunie identificeert het begin van een uniedefinitie. Het wordt gevolgd door een markering die de naam die aan de unie wordt gegeven is. Na de markering zijn unielid dat in steunen wordt ingesloten.
Een instantie, de daadwerkelijke verklaring van een unie, kan ook worden bepaald. Als u de structuur zonder de instantie bepaalt, is het enkel een malplaatje dat later in een programma kan worden gebruikt om structuren te verklaren. Het volgende is het formaat van een malplaatje:
union tag {
union_member(s);
/* de extra verklaringen kunnen hier gaan */
};
Om het malplaatje te gebruiken, zou u het volgende formaat gebruiken:
union tag instance;
Om dit formaat te gebruiken, moet u een unie met de bepaalde markering eerder verklaard hebben.
/* Verklaar een uniemalplaatje genoemd markering */
union tag {
int num;
char alps;
}
/* Gebruik het uniemalplaatje */
union tag mixed_variable;
/* Verklaar samen een unie en een instantie */
union generic_type_tag {
char c;
int i;
float f;
double d;
} generic;
/* Initialize a union. */
union date_tag {
char full_date[9];
struct part_date_tag {
char month[2];
char break_value1;
char day[2];
char break_value2;
char year[2];
} part_date;
}date = {"09/12/80"};
Beter begrijp het met behulp van voorbeelden:
#include <stdio.h>
int main()
{
union
{
int value; /* Dit is het eerste deel van de unie */
struct
{
char first; /* Deze twee waarden zijn het tweede deel van het */
char second;
} half;
} number;
long index;
for (index = 12 ; index < 300000L ; index += 35231L)
{
number.value = index;
printf("%8x %6x %6x\n", number.value,
number.half.first,
number.half.second);
}
return 0;
}
En de output van het programma zal als volgt worden getoond:
c c 0
89ab ffab ff89
134a 4a 13
9ce9 ffe9 ff9c
2688 ff88 26
b027 27 ffb0
39c6 ffc6 39
c365 65 ffc3
4d04 4 4d
|
|