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

Unions em C Explicadas: Definição, Uso e Comparação com Structs

Unions em C Explicadas

Aprenda a definir, criar e acessar unions em C, e descubra por que elas diferem de structs no layout de memória e aplicação.

Uma union é um tipo definido pelo usuário em C que, ao contrário de uma struct, pode conter apenas um dos valores de seus membros por vez. Isso torna unions ideais para representações de dados eficientes em memória e type-punning em programação de baixo nível.


Definindo uma Union

Use a palavra-chave union para declarar um novo tipo. Por exemplo:

union Carro { char nome[50]; int preco; };

O código acima cria um tipo derivado union Carro que pode armazenar uma string de 50 caracteres ou um preço inteiro.


Criando variáveis de Union

Definir uma union não aloca memória. Para usá-la, declare variáveis desse tipo:

union Carro carro1, carro2, *carro3; 

Alternativamente, você pode combinar a definição e a declaração de variáveis:

union Carro { char nome[50]; int preco; } carro1, carro2, *carro3;

Em ambos os exemplos, carro1 e carro2 são instâncias de union, enquanto carro3 é um ponteiro para uma union.


Acessando membros da Union

Use o operador ponto (.) para acesso direto e a seta (->) para acesso via ponteiro:


Unions vs. Structs

Enquanto structs alocam espaço suficiente para todos os membros, o tamanho de uma union é igual ao tamanho de seu maior membro. Considere esta comparação:

#include <stdio.h> union UnionJob { char nome[32]; float salario; int workerNo; } uJob; struct StructJob { char nome[32]; float salario; int workerNo; } sJob; int main() { printf("tamanho da union = %zu bytes\n", sizeof(uJob)); printf("tamanho da estrutura = %zu bytes", sizeof(sJob)); return 0; }

Saída:

tamanho da union = 32 tamanho da estrutura = 40

Aqui, a struct ocupa 40 bytes (32 + 4 + 4), enquanto a union ocupa apenas 32 bytes – o tamanho de seu maior membro, nome[32]. Todos os membros da union compartilham a mesma região de memória.


Exemplo prático: Sobrescrita de membro

#include <stdio.h> union Job { float salario; int workerNo; } j; int main() { j.salario = 12.3; j.workerNo = 100; // sobrescreve o valor anterior printf("Salário = %.1f\n", j.salario); printf("Número de trabalhadores = %d", j.workerNo); return 0; }

Saída:

Salário = 0.0 Número de trabalhadores = 100

Como salario e workerNo compartilham a mesma memória, escrever em um limpa o outro.


Para explorar casos de uso reais, leia Por que precisamos de Unions em C?.

Linguagem C

  1. Dominando Enums em Java: Guia Completo de Enums e Enum Classes
  2. Construtores de Enum em Java Explicados com Exemplo Prático
  3. Uniões em C Explicadas: Gerenciamento Eficiente de Memória para Múltiplos Tipos de Dados
  4. Dominando o Dimensionamento de Válvulas Pneumáticas: Um Guia Prático
  5. Mercado de IA na Manufatura Deve Alcançar US$ 4,8 Bilhões até 2026, Crescendo a 28,1% CAGR
  6. Guia Profissional para Cortar Barras de Alumínio com Segurança e Precisão
  7. Uniões de Tubos (Pipe Unions): Definição, Uso e Benefícios
  8. Guia de Especialistas para Dimensionar Corretamente Seu Ar Condicionado Comercial para Desempenho Ideal
  9. Escolhendo o Tamanho Certo de Torno para Armeiro: Guia Completo
  10. Escolhendo o Tamanho Ideal do Vaso de Ar: Otimize Desempenho e Eficiência