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.