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 o seguintewing 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

Estrutura vs. União
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 o com.plexSe a capacidade do projeto de TI ultrapassar 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 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