La parola chiave del sindacato
union tag {
union_member(s);
/* additional statements may go here */
}instance;
La parola chiave del sindacato è usata per dichiarare i sindacati. Un'unione è una collezione di una o più variabili (union_members) che sono state raggruppate sotto un singolo nome. In più, ciascuno di questi membri del sindacato occupa la stessa zona della memoria.
L'unione di parola chiave identifica l'inizio di una definizione del sindacato. È seguito da una modifica che è il nome dato all'unione. A seguito della modifica sono i membri del sindacato chiusi in sostegni.
Un caso, la dichiarazione reale di un'unione, anche può essere definito. Se definite la struttura senza il caso, è giusto una mascherina che può essere usata più successivamente in un programma per dichiarare le strutture. Ciò che segue è disposizione della mascherina:
union tag {
union_member(s);
/* additional statements may go here */
};
Per usare la mascherina, usereste la seguente disposizione:
union tag instance;
Per usare questa disposizione, dovete precedentemente dichiarare un'unione con la data modifica.
/* Declare a union template called tag */
union tag {
int num;
char alps;
}
/* Use the union template */
union tag mixed_variable;
/* Declare a union and instance together */
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"};
Più meglio capiamolo con l'aiuto degli esempi:
#include <stdio.h>
int main()
{
union
{
int value; /* This is the first part of the union */
struct
{
char first; /* These two values are the second part of it */
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;
}
E l'uscita del programma sarà visualizzata come segue:
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
|
|