Diferença entre estrutura e união

Tanto a estrutura quanto a união são tipos de dados definidos pelo usuário na linguagem C e são conceitualmente iguais, no entanto, ainda são diferentes em alguns aspectos, como o modo como a memória é alocada para seus membros. Eles são declarados da mesma forma, mas funcionam de maneira diferente. Eles permitem que o usuário combine diferentes tipos de dados com um único nome. Enquanto um local de memória separado é usado para cada membro ao declarar variáveis ​​de estrutura, os diferentes membros de uma variável de união compartilham o mesmo local de memória. Vamos estudar a diferença entre estrutura e união é detalhe.

O que é estrutura?

Uma estrutura é apenas outro tipo de dados definido pelo usuário em C que permite ao usuário combinar tipos de dados de tipos diferentes em um único tipo em um bloco de memória. Uma estrutura pode conter tipos de dados simples e complexos relacionados entre si, que de outra forma não farão sentido. Cada membro em uma estrutura obtém seu próprio local de memória para que possa ser acessado e recuperado a qualquer momento.

Uma estrutura é usada quando muitos dados precisam ser agrupados, como um diretório que armazena informações sobre muitos membros em um catálogo ou um catálogo de endereços que armazena todas as informações sobre um único contato - nome, endereço, número de contato etc. O endereço de cada membro será em ordem crescente, o que significa que a memória de cada membro será iniciada com diferentes valores de deslocamento. Alterar o valor de um membro não terá efeito sobre outros membros.

Uma palavra-chave 'struct' é usada para definir uma estrutura de diferentes tipos de dados sob um único nome. Por exemplo, se você deseja criar um banco de dados de funcionários, precisará armazenar os detalhes do nome, idade, telefone e salário do funcionário em uma única entidade. Isso é feito pela palavra-chave 'struct', que informa ao compilador que uma estrutura foi declarada.

struct employee

nome da string;

idade da corda;

telefone celular;

salário de corda;

emp1, emp2;

Aqui, 'employee' é o nome da estrutura e duas variáveis ​​'emp1' e 'emp2' são criadas do tipo 'employee'. As chaves de fechamento devem ser seguidas por um ponto e vírgula (;).

Os membros de uma estrutura podem ser acessados ​​por dois tipos de operadores:

  1. Operador membro
  2. Operador de ponteiro de estrutura

O que é a União?

É um tipo de dados especial usado em C que permite ao usuário armazenar tipos de dados de diferentes tipos no mesmo local da memória. Uma união é bastante semelhante a uma estrutura e pode ser definida substituindo a palavra-chave 'struct' pela palavra-chave 'union'. Os membros sobrepõem a memória um do outro em um sindicato e é grande o suficiente para caber a todos os seus membros.

Quando uma variável é associada à união, o compilador aloca a memória considerando o tamanho da maior memória, portanto, o tamanho de uma união é igual ao tamanho do maior membro de dados. Uma união pode ser definida com muitos membros, mas apenas um membro contém o valor em qualquer instância de tempo.

O endereço é o mesmo para todos os membros de um sindicato, o que significa que todos os membros começam com o mesmo valor de compensação. E alterar o valor de um membro afetará os valores de outros membros. Uma união pode ser usada quando você deseja armazenar algo que é um dos vários tipos de dados.

funcionário do sindicato

nome do caractere [32];

int idade;

salário flutuante;

;

Aqui, a palavra-chave 'união' define a união que é bastante semelhante à declaração da estrutura. A variável pode armazenar um valor de sequência que é 'nome do funcionário', um valor inteiro que é a 'idade do funcionário' ou um número flutuante que representa o 'salário do funcionário'.

Diferença entre estrutura e união

1. Palavra-chave

A palavra-chave 'struct' é usada para definir uma estrutura, enquanto a palavra-chave 'union' é usada para definir uma união.

2. Alocação de Memória

Espaço de memória separado é alocado para os membros dentro de uma estrutura e os membros têm endereços diferentes que não compartilham memória. Uma união, por outro lado, compartilha o mesmo espaço de memória para todos os seus membros, para que o local da memória compartilhada seja alocado.

3. Acesso de Membro

Um sindicato armazena um valor único de cada vez para todos os seus membros, acessando apenas um membro de cada vez. Embora vários valores possam ser armazenados em uma estrutura, qualquer valor de membro pode ser acessado e recuperado a qualquer momento.

4. tamanho

O tamanho de uma estrutura é igual à soma do tamanho de todos os membros ou mais, enquanto o tamanho de uma união é igual ao tamanho do maior membro de tamanho.

5. Inicialização

Em uma estrutura, vários membros podem ser inicializados de uma só vez, enquanto em uma união, apenas o primeiro membro pode ser inicializado com o valor de seu tipo.

5. Valor

Uma estrutura pode armazenar valores diferentes de todos os membros e a alteração no valor de um membro não afetará os valores de outros membros. Enquanto um sindicato armazena o mesmo valor para todos os seus membros e a mudança de valor de um membro afeta o valor de outros.

Estrutura vs. União

Estrutura União
A palavra-chave Struct é usada para definir uma estrutura. A palavra-chave Union é usada para definir uma união.
Membros não compartilham memória em uma estrutura. Os membros compartilham o espaço da memória em uma união.
Qualquer membro pode ser recuperado a qualquer momento em uma estrutura. Somente um membro pode ser acessado por vez em uma união.
Vários membros de uma estrutura podem ser inicializados de uma só vez. Somente o primeiro membro pode ser inicializado.
O tamanho da estrutura é igual à soma do tamanho de cada membro. Tamanho da união é igual ao tamanho do maior membro.
Alterar o valor de um membro não afetará o valor de outro. A mudança no valor de um membro afetará outros valores do membro.
Armazena valores diferentes para todos os membros. Armazena o mesmo valor para todos os membros.

Sumário

  • Tanto a estrutura quanto a união são tipos de dados definidos pelo usuário em C que são funcional e conceitualmente os mesmos, mas são bastante diferentes em alguns aspectos.
  •  Ambos contêm variáveis ​​de tipos de dados diferentes, mas usam a mesma sintaxe para declaração de variáveis ​​e acesso a membros. Enquanto uma estrutura é definida pela palavra-chave 'struct', uma união é definida pela palavra-chave 'union'.
  • Cada membro obtém um local de memória separado em uma estrutura, enquanto que em uma união, o espaço total de memória é equivalente ao membro de maior tamanho. Todos os membros compartilham o mesmo espaço de memória em uma união.
  • Qualquer membro em qualquer sequência pode ser acessado em uma estrutura, enquanto em uma união, somente essa variável pode ser acessada cujo valor é armazenado recentemente.