Una union es una posición de memoria que es compartida por dos o más variables diferentes, generalmente de distinto tipo.
Definición:
union miUnion
{
int i;
char ch;
};
miUnion miU;
La unión será lo suficientemente grande como albergar el tipo de dato mayor.
El acceso a los objetos contenidos en la unión se realizará mediante el operador punto (como en las estructuras)
miU.i
Ejemplo.-
#include <stdio.h>
union miUnion{
int i;
char c;
};
int main(int argc, char *argv[])
{
miUnion u;
//u.c = 98;
u.i = 21090;
printf("El valor del entero es: %d\n",u.i);
printf("El valor del caracter es: %c\n",u.c);
return 0;
}
La salida por pantalla sería:
El valor del entero es: 21090
El valor del caracter es: b
Al imprimir u.c, se muestra el carácter b, que es representado internamente con el valor 98.
Ejemplo 2.-
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
const int tam = sizeof(long);
union un{
long l;
char p[tam];
};
system("clear");
un u;
u.l = 32;
printf("Valor de los diferentes bytes del long\n");
for(int i = 7; i >= 0; i--)
{
printf("%d ", u.p[i]);
}
printf("\nAsignación de un valor a la posición 7 del array p\n");
u.p[7] = 8;
printf("Valor del long despues de la asignación: %ld\n",u.l);
printf("Valor de los diferentes bytes del long\n");
for(int i = 7; i >= 0; i--)
{
printf("%d ", u.p[i]);
}
return 0;
}
Los que trabajen en sistemas Windows, deben sustituir system("clear"); por sytem("cls");
Salida del programa Ejemplo2