Diferença entre estrutura e união em C

Diferença de chave - Estrutura vs União em C
 

Uma matriz é um dado estruturado suportado pela linguagem C. Uma matriz pode ser usada para armazenar elementos de dados do mesmo tipo. Se houver uma declaração como int marca [10]; as marcas são uma matriz que pode armazenar dez marcas e todas elas são números inteiros. Às vezes, é necessário armazenar elementos de dados de tipos diferentes no mesmo local da memória. Por exemplo, um funcionário pode ter um ID, nome, departamento, idade etc. Eles são de diferentes tipos de dados. Portanto, é necessário ter um método para armazenar vários elementos de dados como uma única unidade. Estruturas e Uniões em C são usadas para armazenar elementos de dados de tipos diferentes no mesmo local de memória. Uma estrutura e uma união são semelhantes, mas se diferenciam principalmente devido à alocação de memória. A memória necessária para armazenar uma variável de estrutura é a soma do tamanho da memória de todos os membros. A memória necessária para armazenar uma variável de união é a memória necessária para o maior elemento da união. Isso é a principal diferença entre estrutura e união em C. Este artigo discute a diferença entre estrutura e união em C.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é estrutura em C
3. O que é União em C
4. Semelhanças entre estrutura e união em C
5. Comparação lado a lado - Estrutura vs União em C em forma de tabela
6. Resumo

O que é estrutura em C?

Uma estrutura é um tipo de dados definido pelo usuário em C. Ajuda a combinar itens de dados de diferentes tipos. Uma estrutura pode representar registros. Um aluno pode ter student_id, student_name etc. Em vez de armazenar cada variável separadamente, todos esses itens de dados diferentes podem ser compactados em uma única unidade usando uma estrutura. É definido usando a palavra-chave 'struct'. Em uma estrutura, todos os seus membros podem ser acessados ​​a qualquer momento. A seguir, cria um tipo de dados derivado struct Student.

struct Student

intstudent_id;

char student_name [20];

;

Para a estrutura acima, as variáveis ​​podem ser declaradas da seguinte maneira.

struct Student student1, student2, student3;

Existem dois métodos para acessar os membros da estrutura. Ou seja, usando o operador membro (.) E o operador ponteiro de estrutura (->). Os membros podem ser acessados ​​usando structure_variable_name. nome do membro. Se o programador quiser acessar o nome do aluno 2, ele poderá escrever a instrução como printf (student2.student_namename);

Consulte o programa abaixo com uma estrutura.

Figura 01: programa C com estruturas

De acordo com o programa acima, Student é uma estrutura. Ele contém student_id e student_name. Duas variáveis ​​do tipo de estrutura são declaradas no programa principal. Eles são chamados de student1 e student2. A identificação do aluno1 é atribuída com o valor 1 usando o operador membro como student1.student_id = 1. O nome "Ann" é uma string. Portanto, ele é copiado para o membro student_name usando a função de cópia de cadeia strcpy. O ID e o nome são atribuídos ao aluno2 de maneira semelhante. Finalmente, esses valores são impressos usando o operador membro.

A quantidade de memória necessária para armazenar uma variável de estrutura é a soma do tamanho da memória de todos os membros. O student_id contém 4 bytes e student_name contém 20 bytes (um byte cada para um caractere). O total de 24 bytes é a soma do tamanho da memória exigida pela estrutura.

O que é a união em C?

Uma união é um tipo de dados definido pelo usuário em C. Ajuda a armazenar diferentes tipos de dados no mesmo local de memória. Um Livro pode ter propriedades como book_name, price etc. Em vez de criar variáveis ​​para cada um deles, uma união pode ser usada para compactar todos os tipos de dados diferentes em uma unidade usando uma união. Ele é definido usando a palavra-chave 'union'..

unionBook

nome do caractere [20];

preço duplo;

;

Para a união acima, as variáveis ​​podem ser declaradas da seguinte forma.

união Livro book1, book2;

Existem dois métodos para acessar os membros do sindicato. Ou seja, usando o operador membro (.) E o operador ponteiro de estrutura (->). Os membros podem ser acessados ​​usando union_variable_name. nome do membro. Se o programador quiser acessar o nome do book1, ele poderá escrever a instrução como printf (book1.name);

Consulte o programa abaixo com uma união.

Figura 02: Programa C usando união

De acordo com o programa acima, o Livro é uma união. O book1 é uma variável do tipo union. O nome e o preço são valores atribuídos. Na união, apenas um de seus membros pode ser acessado por vez e todos os outros membros terão valores de lixo. O valor do ID não é impresso corretamente, mas o valor do preço é impresso corretamente.

Figura 03: Programa C modificado com união

De acordo com o programa acima, o Book é uma união. O livro1 e o livro2 são variáveis ​​do tipo união. Primeiro, o valor do nome do livro1 é atribuído e é impresso. Em seguida, o valor para o nome do livro2 é atribuído e impresso. Todos os membros são impressos corretamente porque um membro está sendo usado por vez. A memória necessária para armazenar uma união é a memória necessária para o maior elemento da união. No programa acima, a variável name é 20 bytes. É maior que o preço. Portanto, a alocação de memória para a união é de 20 bytes.

Quais são as semelhanças entre estrutura e união em C?

  • Estrutura e União em C são tipos de dados definidos pelo usuário.
  • Estrutura e União em C podem ser usadas para armazenar diferentes tipos de dados no mesmo local de memória.

Qual é a diferença entre estrutura e união em C?

Estrutura vs União em C

Estrutura é um tipo de dados definido pelo usuário na linguagem C que permite combinar dados de diferentes tipos. Union é um tipo de dados definido pelo usuário na linguagem C que permite combinar dados de diferentes tipos.
 Acessibilidade
Em uma estrutura, todos os seus membros podem ser acessados ​​a qualquer momento. Em uma união, apenas um de seus membros pode ser acessado por vez e todos os outros membros conterão valores de lixo.
Alocação de memória
A memória necessária para armazenar uma variável de estrutura é a soma do tamanho da memória de todos os membros. A memória necessária para armazenar uma variável de união é a memória necessária para o maior elemento da união.
 Palavra-chave
A palavra-chave usada para definir uma estrutura é 'struct'. A palavra-chave usada para definir uma união é 'união'.

Sumário - Estrutura vs União em C

Uma matriz é usada para armazenar os elementos de dados do mesmo tipo. Às vezes, é necessário armazenar elementos de dados de tipos diferentes no mesmo local da memória. A linguagem de programação C fornece estrutura e união para realizar esta tarefa. Ambos são tipos de dados definidos pelo usuário. A memória necessária para armazenar uma variável de estrutura é a soma do tamanho da memória de todos os membros. A memória necessária para armazenar uma variável de união é a memória necessária para o maior elemento da união. Essa é a diferença entre estrutura e união em C.

Referência:

1.Point, Tutoriais. “Structures in C.”, Tutorials Point, 15 de agosto de 2017. Disponível aqui 
2.Point, Tutoriais. "Sindicatos em C." , Tutorials Point, 15 de agosto de 2017. Disponível aqui