Uma união permite que uma dada área de memória seja tratada como variáveis de tipos diferentes em instantes de tempos diferentes. Uniões são definidas e acessadas de forma similar a estruturas, usando a palavra chave union ao invés de struct.
A título de exemplo, considere a situação onde se queira obter a representação interna de um número em ponto flutuante especificado na linha de comando. O programa a seguir pode ser usado para imprimir esta representação em octal:
#include <stdlib.h>
int main(int argc, char *argv[]) {
union {
float f;
unsigned int i;
} num;
if (argc == 2) {
num.f = atof(argv[1]);
printf("%f tem representacao octal %o\n",
num.f, num.i);
}
return 0;
}
O compilador se encarrega de reservar espaço para armazenar dados de tamanho do maior dos membros da união.