Diferença entre Estrutura e União em C
O que é Estrutura?
Estrutura é um tipo de dados definido pelo usuário na linguagem de programação C que combina itens de dados logicamente relacionados de diferentes tipos de dados.
Todos os elementos da estrutura são armazenados em locais de memória contíguos. A variável de tipo de estrutura pode armazenar mais de um item de dados de vários tipos de dados sob um nome.
O que é União
Union é um tipo de dados definido pelo usuário, assim como uma estrutura. Union combina objetos de diferentes tipos e tamanhos. A variável de união aloca o espaço de memória igual ao espaço para armazenar a maior variável de união. Ele permite que vários tipos de objetos compartilhem o mesmo local.
Sintaxe da estrutura de declaração
struct [name of the structure]
{
type member1;
type member2;
type member3;
};
A estrutura é declarada usando a palavra-chave “struct” e o nome da estrutura. Número 1, número 2, número 3 são membros individuais da estrutura. A parte do corpo termina com ponto e vírgula (;).
Exemplo de estrutura em programação C
#include <stdio.h>
struct student {
char name[60];
int roll_no;
float marks;
} sdt;
int main() {
printf("Enter the following information:\n");
printf("Enter student name: ");
fgets(sdt.name, sizeof(sdt.name), stdin);
printf("Enter student roll number: ");
scanf("%d", & sdt. roll_no);
printf("Enter students marks: ");
scanf("%f", & sdt.marks);
printf("The information you have entered is: \n");
printf("Student name: ");
printf("%s", sdt.name);
printf("Student roll number: %d\n", sdt. roll_no);
printf("Student marks: %.1f\n", sdt.marks);
return 0;
}
No programa acima, é criada uma estrutura chamada aluno. Essa estrutura possui três membros de dados: 1) nome (string), 2) roll_no (inteiro) e 3) marcas (float).
Após isso, é criada uma variável de estrutura sdt para armazenar as informações do aluno e exibi-las na tela do computador.
Saída:
Digite as seguintes informações:
Digite o nome do aluno: James
Insira o número da matrícula do aluno: 21
Insira as notas dos alunos: 67
As informações que você inseriu são:
Nome do aluno: João
Número da lista de alunos: 21
Notas dos alunos: 67.0
Sintaxe de declaração de união
union [name of union]
{
type member1;
type member2;
type member3;
};
A união é declarada usando a palavra-chave “união” e o nome da união. Número 1, número 2, número 3 são membros individuais do sindicato. A parte do corpo termina com ponto e vírgula (;).
Exemplo de União em Programação C
#include <stdio.h>
union item
{
int x;
float y;
char ch;
};
int main( )
{
union item it;
it.x = 12;
it.y = 20.2;
it.ch = 'a';
printf("%d\n", it.x);
printf("%f\n", it.y);
printf("%c\n", it.ch);
return 0;
}
Saída:
1101109601
20.199892
a
No programa acima, você pode ver que os valores de x e y foram corrompidos. Somente a variável ch imprime o resultado esperado. Isso ocorre porque, em união, a localização da memória é compartilhada entre todos os tipos de dados membros.
Portanto, o único membro de dados cujo valor está armazenado atualmente ocupará espaço na memória. O valor da variável ch foi finalmente armazenado, então o valor do restante da variável variáveis está perdido.
Estrutura vs. União

Aqui está a diferença importante entre estrutura e união:
| Estrutura | União |
|---|---|
| Você pode usar uma palavra-chave struct para definir uma estrutura. | Você pode usar uma palavra-chave union para definir uma união. |
| Cada membro da estrutura recebe um local de memória exclusivo. | Na união, um local de memória é compartilhado por todos os membros de dados. |
| Alterar o valor de um membro de dados não afetará outros membros de dados na estrutura. | Alterar o valor de um membro de dados alterará o valor de outros membros de dados na união. |
| Ele permite inicializar vários membros de uma vez. | Ele permite inicializar apenas o primeiro membro da união. |
| O tamanho total da estrutura é a soma do tamanho de cada membro de dados. | O tamanho total da união é o tamanho do maior membro de dados. |
| É usado principalmente para armazenar vários tipos de dados. | É usado principalmente para armazenar um dos muitos tipos de dados disponíveis. |
| Ocupa espaço para cada membro escrito em parâmetros internos. | Ocupa espaço para um membro de maior tamanho escrito em parâmetros internos. |
| Você pode recuperar qualquer membro de cada vez. | Você pode acessar um membro por vez no sindicato. |
| Ele suporta array flexível. | Não oferece suporte a uma matriz flexível. |
Vantagens da estrutura
Aqui estão os prós/benefícios de usar a estrutura:
- As estruturas reúnem mais de um dado sobre o mesmo assunto no mesmo local.
- É útil quando você deseja coletar dados de tipos e parâmetros semelhantes, como nome, sobrenome, etc.
- É muito fácil de manter, pois podemos representar todo o registro usando um único nome.
- Na estrutura, podemos passar um conjunto completo de registros para qualquer função usando um único parâmetro.
- Você pode usar uma matriz de estrutura para armazenar mais registros com tipos semelhantes.
Vantagens da união
Aqui estão os prós/benefícios de usar o sindicato:
- Ocupa menos memória em comparação com a estrutura.
- Quando você usa união, apenas a última variável pode ser acessada diretamente.
- Union é usado quando você precisa usar o mesmo local de memória para dois ou mais membros de dados.
- Ele permite armazenar dados de apenas um membro de dados.
- Seu espaço alocado é igual ao tamanho máximo do membro de dados.
Desvantagens da estrutura
Aqui estão os contras/desvantagens do uso da estrutura:
- Se a complexidade do projeto de TI ultrapassar o limite, torna-se difícil gerenciá-lo.
- A mudança de uma estrutura de dados em um código exige mudanças em muitos outros lugares. Portanto, as mudanças tornam-se difíceis de acompanhar.
- A estrutura é mais lenta porque requer espaço de armazenamento para todos os dados.
- Você pode recuperar qualquer membro por vez na estrutura, enquanto pode acessar um membro por vez no sindicato.
- A estrutura ocupa espaço para cada membro escrito em parâmetros internos, enquanto a união ocupa espaço para um membro com o tamanho mais alto escrito em parâmetros internos.
- A estrutura suporta array flexível. Union não oferece suporte a um array flexível.
Desvantagens da união
Aqui estão os contras/desvantagens de usar união:
- Você pode usar apenas um membro do sindicato por vez.
- Todas as variáveis de união não podem ser inicializadas ou usadas com valores variados ao mesmo tempo.
- Union atribui um espaço de armazenamento comum para todos os seus membros.
PRINCIPAIS DIFERENÇAS:
- Cada membro da estrutura recebe um local de memória exclusivo, enquanto na união um local de memória é compartilhado por todos os membros de dados.
- Alterar o valor de um membro de dados não afetará outros membros de dados na estrutura, enquanto alterar o valor de um membro de dados alterará o valor de outros membros de dados na união.
- A estrutura é usada principalmente para armazenar vários tipos de dados, enquanto a união é usada principalmente para armazenar um dos muitos tipos de dados.
- Na estrutura, você pode recuperar qualquer membro por vez, por outro lado, no sindicato, você pode acessar um membro por vez.
- A estrutura oferece suporte a array flexível, enquanto a união não oferece suporte a um array flexível.
Verifique também nosso tutorial C para iniciantes: - Clique aqui
