Diferença entre Estrutura e União
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 juntos.
Todos os elementos da estrutura são armazenados em locais de memória contíguos. A variável do tipo de estrutura pode armazenar mais de um item de dados de vários tipos de dados sob um nome.
Neste tutorial, você aprenderá:
- O que é Estrutura?
- O que é União
- Sintaxe da estrutura declarativa
- Exemplo de estrutura em programação C
- Sintaxe de Declaring Union
- Exemplo de união na programação C
- Estrutura vs. União
- Vantagens da estrutura
- Vantagens da união
- Desvantagens da estrutura
- Desvantagens da união
O que é União
União é um tipo de dados definido pelo usuário, assim como uma estrutura. União combina objetos de diferentes tipos e tamanhos juntos. A variável de união aloca o espaço de memória igual ao espaço para conter a maior variável de união. Ele permite que vários tipos de objetos compartilhem o mesmo local.
Sintaxe da estrutura declarativa
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 um 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, uma estrutura chamada aluno é criada. Essa estrutura tem três membros de dados:1) nome (string), 2) roll_no (inteiro) e 3) marcas (float).
Após isso, uma variável de estrutura sdt é criada para armazenar as informações do aluno e exibi-las na tela do computador.
Saída:
Insira as seguintes informações:
Digite o nome do aluno:Tiago
Digite o número do cadastro do aluno:21
Digite as notas dos alunos:67
As informações que você digitou são:
Nome do aluno:João
Número do registro do aluno:21
Notas dos alunos:67,0
Sintaxe de Declaring Union
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 um 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
uma
No programa acima, você pode ver que os valores de x e y são corrompidos. Apenas a variável ch imprime o resultado esperado. É porque, na 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 no momento ocupará espaço de memória. O valor da variável ch foi finalmente armazenado, então o valor do resto das variáveis é 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 dentro da estrutura recebe um local de memória exclusivo. Na união, um local de memória é compartilhado por todos os membros de dados. Alterando o valor de um membro de dados não afetará outros membros de dados na estrutura.Mudar o valor de um membro de dados mudará o valor de outros membros de dados na união.Permite inicializar vários membros de uma vez.Permite inicializar apenas o primeiro membro de 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 com o maior tamanho escrito em parâmetros internos. Você pode recuperar qualquer membro de cada vez. Você pode acessar um membro er de cada vez na união. Suporta array flexível. Não suporta array 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 lugar.
- É útil quando você deseja coletar os dados de tipos de dados 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 do uso do sindicato:
- Ele ocupa menos memória em comparação com a estrutura.
- Quando você usa união, apenas a última variável pode ser acessada diretamente.
- A união é usada quando você precisa usar o mesmo local de memória para dois ou mais membros de dados.
- Permite que você mantenha 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 de gerenciar.
- A alteração de uma estrutura de dados em um código exige alterações em muitos outros lugares. Portanto, as alterações se tornam difíceis de rastrear.
- 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 na união.
- 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 maior tamanho escrito em parâmetros internos.
- A estrutura suporta array flexível. A união não oferece suporte a uma matriz flexível.
Desvantagens da união
Aqui estão os contras/desvantagens do uso da 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.
- O Union atribui um espaço de armazenamento comum para todos os seus membros.
DIFERENÇAS PRINCIPAIS:
- A cada membro dentro da estrutura é atribuído 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 de cada vez, por outro lado, na união, você pode acessar um membro por vez.
- Structure suporta array flexível, enquanto união não suporta array flexível.
Linguagem C
- Diferença entre amianto e fibra de vidro
- Diferença entre estrutura e classe:explicada com exemplo de C++
- C# vs. C++:Qual é a diferença entre C# e C++?
- Diferença entre C e C++
- Diferença entre C e Java
- Diferença entre strlen() e sizeof() para string em C
- Python vs JavaScript:Diferença entre JavaScript e Python
- A diferença entre motores CC e CA
- Diferença entre brasagem e solda
- Diferença entre motores 2 tempos e 4 tempos