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 diretamenete do tipo de dado de maior armazenamento em sua composição.
O tipo de dados union é principalmente utilizado para economizar espaço memória. Hoje,
dia, com máquinas equipadas com 32GB+, o uso desse tipo de dado depende da aplicação.
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:
Sintaxe
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 por vez, ou seja, a cada atribuição
de valor a um determinado membro, a utilização desse deve ser feita logo em seguida ou
antes da atualização de algum membro.
Sintaxe
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 retornados ocasionando erros.