Principal diferença
Estrutura e união são tipos de dados demarcados pelo usuário que contêm variáveis de diferentes tipos de dados. Ambos têm a mesma sintaxe para definir, declarar variáveis e recuperar membros. Ainda assim, há muitas diferenças entre estrutura e união. Na estrutura, cada membro recebe um espaço separado na memória. Na união, o espaço total de memória alocado é igual ao maior membro. Todos os outros membros compartilham o mesmo espaço de memória. Essa é a maior diferença entre estrutura e união.
Qual é a estrutura?
A estrutura usa toda a memória de seu membro. Na estrutura podemos admitir qualquer membro em qualquer sequência.
O que é União?
União usa o espaço de memória do maior membro. Na união podemos acessar apenas aquela variável cujo valor foi armazenado recentemente.
Principais diferenças
- Na estrutura, cada membro recebe um espaço separado na memória. Na união, o espaço total de memória alocado é igual ao maior membro. Todos os outros membros compartilham o mesmo espaço de memória. Essa é a maior diferença entre estrutura e união.
- Na estrutura podemos admitir qualquer membro em qualquer sequência. Considerando que na união podemos acessar apenas aquela variável cujo valor foi armazenado recentemente.
- Todos os membros podem ser preparados declarando a variável de estrutura. Apenas o primeiro membro pode ser inicializado ao declarar a variável de ligação. No exemplo acima só podemos modificar a variável roll não no momento da declaração da variável.
- Dentro de uma estrutura, todos os membros recebem memória alocada e os membros têm endereços que aumentam à medida que os desaceleradores são lidos da esquerda para a direita. Ou seja, todos os membros de uma estrutura começam em diferentes deslocamentos da base da estrutura. Para um compilador de união aloca memória para o maior de todos os membros e em uma união todos os membros têm deslocamento zero da base, o contêiner é grande o suficiente para conter o membro WIDEST e o alinhamento é apropriado para todos os tipos na união.
- Dentro de uma estrutura, todos os membros são alocados em memória; portanto, qualquer membro pode se recuperar a qualquer momento. Ao recuperar dados de uma união, o tipo que está sendo recuperado deve ser o tipo armazenado mais recentemente.
- Um ou mais membros de uma estrutura podem ser inicializados por vez. Uma união só pode ser inicializada com um valor do tipo de seu primeiro membro; portanto, a união u descrita acima (durante a declaração de exemplo) só pode ser inicializada com um valor inteiro.
- A quantidade de memória pré-requisito para armazenar uma variável de estrutura é a soma do tamanho de todos os membros. Por outro lado, no caso de uniões, a quantidade de memória necessária é sempre igual à exigida pelo seu maior membro.
- Com uma junção, é apenas hipotético usar um dos itens, porque todos estão armazenados no mesmo local. Isso o torna útil quando você deseja armazenar algo que pode ser de vários tipos. Uma estrutura, por outro lado, tem um local de memória separado para cada um de seus elementos e todos podem ser usados de uma só vez.