O tipo union é um tipo de dado complexo que permite que um mesmo local de memória seja compartilhado
armazenando diferentes tipos de dados.
Seus membros devem ser declarados entre { e } e separados por (;). A declaração de seus membros segue
as mesmas regras para declaração de variáveis. Seu tamanho depende dos tipos de dados utilizados
em sua composição.
O tipo de dados union é principalmente utilizado para economizar memória.
Sintaxe
union nome_union
{
tipo_dado membro1;
tipo_dado membro2;
tipo_dado membroN;
}
O acesso aos membros de uma union é feita utilizando o operadore (.) seguido do nome do do membro como pode
ver visto na sintaxe abaixo:
Exemplo
variavel_enum.nome_membro
Como um union agrupa vários tipos de dados em apenas um local de memória, é necessário trabalhar
com um membro de union por vez, ou seja, a cada atribuição de valor a um determinado membro,
a utilização do mesmo deve ser feito logo em seguida.
Exemplo
variavel_union.nome_membro1 = valor1 //valor descartado
variavel_union.nome_membro2 = valor2 //valor válido para utilização
Caso seja feita a atribuição de valores para todos os membros de uma union de forma sequencial,
apenas o último valor atribuído será válido. Caso outro membro seja acessado, dados inválidos
serão gerados.