Diferença entre Estrutura e União

Índice:

Anonim

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 em um nome.

Neste tutorial, você aprenderá:

  • O que é estrutura?
  • O que é união
  • Sintaxe de declaração de estrutura
  • Exemplo de estrutura na programação C
  • Sintaxe de declaração de união
  • Exemplo de União em Programação C
  • Estrutura vs. União
  • Vantagens de estrutura
  • Vantagens da união
  • Desvantagens de estrutura
  • Desvantagens da união

O que é união

União é um tipo de dado 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 conter a maior variável de união. Ele permite que vários tipos de objetos compartilhem o mesmo local.

Sintaxe de declaração de estrutura

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 é encerrada com um ponto e vírgula (;).

Exemplo de estrutura na programação C

#include 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 (flutuante).

Depois disso, uma variável de estrutura sdt é criada para armazenar informações do aluno e exibi-las na tela do computador.

Resultado:

Insira as seguintes informações:

Digite o nome do aluno: James

Digite o número do rolo do aluno: 21

Digite as notas dos alunos: 67

As informações que você inseriu são:

Nome do aluno: John

Número do rolo do aluno: 21

Notas do aluno: 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 é encerrada com um ponto e vírgula (;).

Exemplo de União em Programação C

#include 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;}

Resultado:

1101109601

20.199892

uma

No programa acima, você pode ver que os valores de xey foram corrompidos. Apenas a variável ch imprime o resultado esperado. É porque, em união, a localização da memória é compartilhada entre todos os tipos de dados de membros.

Portanto, o único membro de dados cujo valor está armazenado no momento ocupará espaço na 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 sindicato para definir um sindicato.
Cada membro da estrutura recebe uma localização de memória exclusiva. 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. Mudar o valor de um membro de dados mudará o valor de outros membros de dados em união.
Ele permite que você inicialize vários membros de uma vez. Ele permite que você inicialize apenas o primeiro membro do sindicato.
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.
Ele ocupa espaço para cada membro escrito em parâmetros internos. Ele 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 de cada vez no sindicato.
Ele oferece suporte a matriz flexível. Ele não oferece suporte a uma matriz flexível.

Vantagens de estrutura

Aqui estão as vantagens / vantagens de usar a estrutura:

  • As estruturas reúnem mais de um dado sobre o mesmo assunto no mesmo lugar.
  • É útil quando você deseja reunir 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 as vantagens / vantagens 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.
  • A união é usada quando você precisa usar o mesmo local de memória para dois ou mais membros de dados.
  • Ele 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 de estrutura

Aqui estão os contras / desvantagens de usar a estrutura:

  • Se a complexidade do projeto de TI ultrapassa o limite, torna-se difícil de gerenciar.
  • 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 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 você 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 oferece suporte a matriz flexível. Union não oferece suporte a uma matriz flexível.

Desvantagens da união

Aqui estão os contras / desvantagens do uso de 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 variáveis ​​ao mesmo tempo.
  • Union atribui um espaço de armazenamento comum para todos os seus membros.

PRINCIPAIS DIFERENÇAS:

  • Cada membro dentro da estrutura é atribuído a um local de memória exclusivo, enquanto em 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 mudará o valor de outros membros de dados em 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 matriz flexível, enquanto a união não oferece suporte a uma matriz flexível.