C União
Sindicatos C
Neste tutorial, você aprenderá sobre uniões na programação C. Mais especificamente, como criar sindicatos, acessar seus membros e aprender as diferenças entre sindicatos e estruturas.
Uma união é um tipo definido pelo usuário semelhante a structs em C, exceto por uma diferença de chave.
As estruturas alocam espaço suficiente para armazenar todos os seus membros, enquanto os sindicatos podem armazenar apenas um valor de membro por vez .
Como definir uma união?
Usamos o
union
palavra-chave para definir sindicatos. Aqui está um exemplo:
union car
{
char name[50];
int price;
};
O código acima define um tipo derivado
union car
. Criar variáveis de união
Quando uma união é definida, ela cria um tipo definido pelo usuário. No entanto, nenhuma memória é alocada. Para alocar memória para um determinado tipo de união e trabalhar com ele, precisamos criar variáveis.
Veja como criamos variáveis de união.
union car
{
char name[50];
int price;
};
int main()
{
union car car1, car2, *car3;
return 0;
}
Outra maneira de criar variáveis de união é:
union car
{
char name[50];
int price;
} car1, car2, *car3;
Em ambos os casos, as variáveis de união car1 , carro2 , e um ponteiro de união car3 de
union car
tipo são criados. Acessar membros de um sindicato
Usamos o
.
operador para acessar membros de um sindicato. E para acessar variáveis de ponteiro, usamos o ->
operador. No exemplo acima,
- Para acessar preço para
car1
,car1.price
é usado. - Para acessar preço usando
car3
, ou(*car3).price
oucar3->price
pode ser usado.
Diferença entre sindicatos e estruturas
Vamos dar um exemplo para demonstrar a diferença entre sindicatos e estruturas:
#include <stdio.h>
union unionJob
{
//defining a union
char name[32];
float salary;
int workerNo;
} uJob;
struct structJob
{
char name[32];
float salary;
int workerNo;
} sJob;
int main()
{
printf("size of union = %d bytes", sizeof(uJob));
printf("\nsize of structure = %d bytes", sizeof(sJob));
return 0;
}
Saída
size of union = 32 size of structure = 40
Por que essa diferença no tamanho das variáveis de união e estrutura?
Aqui, o tamanho de sJob é de 40 bytes porque
- o tamanho de
name[32]
é de 32 bytes - o tamanho de
salary
é de 4 bytes - o tamanho de
workerNo
é de 4 bytes
No entanto, o tamanho de uJob é 32 bytes. É porque o tamanho de uma variável de união sempre será o tamanho de seu maior elemento. No exemplo acima, o tamanho de seu maior elemento, (
name[32]
), é de 32 bytes. Com um sindicato, todos os membros compartilham a mesma memória .
Exemplo:como acessar membros do sindicato
#include <stdio.h>
union Job {
float salary;
int workerNo;
} j;
int main() {
j.salary = 12.3;
// when j.workerNo is assigned a value,
// j.salary will no longer hold 12.3
j.workerNo = 100;
printf("Salary = %.1f\n", j.salary);
printf("Number of workers = %d", j.workerNo);
return 0;
}
Saída
Salary = 0.0 Number of workers = 100
Para saber onde os sindicatos são usados, visite Por que precisamos dos sindicatos C?
Linguagem C
- Enumerações Java
- Construtor de enumeração Java
- C - Sindicatos
- Como dimensionar uma válvula pneumática
- A IA no mercado de manufatura deve atingir US$ 4.798 milhões até 2026
- Cortando o Estoque de Barras de Alumínio no Tamanho
- O que é uma união de tubos?
- Como dimensionar um ar condicionado comercial
- Qual tamanho de torno preciso para armeiro?
- Tamanho é importante para receptores aéreos