La palabra clave de la unión
union tag {
union_member(s);
/* additional statements may go here */
}instance;
La palabra clave de la unión se utiliza para declarar uniones. Una unión es una colección de unas o más variables (union_members) que se han agrupado bajo solo nombre. Además, cada uno de estos miembros de unión ocupa la misma área de la memoria.
La unión de la palabra clave identifica el principio de una definición de la unión. Ha seguido por una etiqueta que es el nombre dado a la unión. Después de la etiqueta están los miembros de unión incluidos en apoyos.
Un caso, el declaración real de una unión, también puede ser definido. Si defines la estructura sin el caso, es justo una plantilla que se pueda utilizar más adelante en un programa para declarar las estructuras. Lo que sigue es formato de una plantilla:
union tag {
union_member(s);
/* additional statements may go here */
};
Para utilizar la plantilla, utilizarías el formato siguiente:
union tag instance;
Para utilizar este formato, debes haber declarado previamente una unión con la etiqueta dada.
/* 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"};
Mejor entendámoslo con la ayuda de ejemplos:
#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;
}
Y la salida del programa será exhibida como sigue:
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
|
|