Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Structs vs. Unions em C: Guia Prático

O que é uma Struct?

Uma struct (estrutura) é um tipo de dado definido pelo usuário em C que agrupa itens de dados logicamente relacionados de diferentes tipos em uma única unidade. Cada membro ocupa sua própria localização de memória contígua, então uma struct pode conter múltiplos valores simultaneamente.

Exemplo: um registro de aluno que armazena nome, número de matrícula e notas sob um único nome de variável.

O que é uma Union?

Uma union (união) também é um tipo definido pelo usuário, mas todos os membros compartilham o mesmo espaço de memória. O tamanho da union é igual ao tamanho de seu maior membro. Este recurso torna unions ideais para cenários com restrição de memória onde apenas um membro é necessário por vez.

Declarando uma Struct

struct Student {
    char name[60];
    int roll_no;
    float marks;
};

Observe o uso da palavra-chave struct e o ponto e vírgula após a chave de fechamento.

Exemplo: Usando uma Struct

#include <stdio.h>
struct Student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main(void) {
    printf("Digite as seguintes informações:\n");
    printf("Nome do aluno: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Número de matrícula: ");
    scanf("%d", &sdt.roll_no);
    printf("Notas: ");
    scanf("%f", &sdt.marks);
    printf("\nDados inseridos:\n");
    printf("Nome: %s", sdt.name);
    printf("Número de matrícula: %d\n", sdt.roll_no);
    printf("Notas: %.1f\n", sdt.marks);
    return 0;
}

Saída (exemplo):

Digite as seguintes informações:
Nome do aluno: James
Número de matrícula: 21
Notas: 67
Dados inseridos:
Nome: James
Número de matrícula: 21
Notas: 67.0

Declarando uma Union

union Item {
    int x;
    float y;
    char ch;
};

Exemplo: Usando uma Union

#include <stdio.h>
union Item {
    int x;
    float y;
    char ch;
};
int main(void) {
    union Item it;
    it.x = 12;
    it.y = 20.2f;
    it.ch = 'a';
    printf("x = %d\n", it.x);
    printf("y = %f\n", it.y);
    printf("ch = %c\n", it.ch);
    return 0;
}

Como todos os membros compartilham memória, definir ch sobrescreve os valores anteriores de x e y. Apenas o último valor armazenado é válido.

Struct vs. Union

Structs vs. Unions em C: Guia Prático

CaracterísticaStructUnion
Palavra-chave de declaraçãostructunion
Layout de memóriaCada membro tem seu próprio espaçoTodos os membros compartilham um espaço
Alterar um membroNão afeta outrosSobrescreve outros membros
InicializaçãoTodos os membros podem ser inicializados simultaneamenteApenas o primeiro membro pode ser inicializado por vez
Tamanho totalSoma dos tamanhos de todos os membrosTamanho do maior membro
Uso típicoArmazenar dados relacionados de vários tiposArmazenar um de vários tipos possíveis
Padrão de acessoQualquer membro pode ser acessado a qualquer momentoApenas um membro é válido por vez
Suporte a array flexívelSuportadoNão suportado

Quando Usar Cada Um

Prós e Contras

Vantagens da Struct

Desvantagens da Struct

Vantagens da Union

Desvantagens da Union

Linguagem C

  1. Amianto vs. Fibra de Vidro: Diferenças-Chave, Usos e Considerações de Segurança
  2. C++ Struct vs Class: Diferenças Principais, Sintaxe e Melhores Casos de Uso
  3. C# vs C++: Comparação Clara de Recursos, Desempenho e Casos de Uso
  4. C vs. C++: Principais Diferenças e Quando Escolher Cada Um
  5. C vs Java: Comparação Abrangente de Recursos, História e Aplicações
  6. strlen() vs. sizeof() em C: Entendendo Diferenças e Uso Correto
  7. Python vs JavaScript: Principais Diferenças, Recursos e Quando Escolher Cada Um
  8. Entendendo Motores CC vs CA: Diferenças Principais e Guia de Compra
  9. Brasagem vs Solda Branda: Principais Diferenças Explicadas
  10. Motores 2 Tempos vs 4 Tempos: Diferenças Principais Explicadas