Uniones C
Uniones C
En este tutorial, aprenderá acerca de las uniones en la programación en C. Más específicamente, cómo crear sindicatos, acceder a sus miembros y aprender las diferencias entre sindicatos y estructuras.
Una unión es un tipo definido por el usuario similar a las estructuras en C excepto por una diferencia clave.
Las estructuras asignan suficiente espacio para almacenar todos sus miembros, mientras que los sindicatos solo pueden tener un valor de miembro a la vez .
¿Cómo definir una unión?
Usamos el union
palabra clave para definir uniones. He aquí un ejemplo:
union car
{
char name[50];
int price;
};
El código anterior define un tipo derivado union car
.
Crear unión de variables
Cuando se define una unión, crea un tipo definido por el usuario. Sin embargo, no se asigna memoria. Para asignar memoria para un tipo de unión dado y trabajar con él, necesitamos crear variables.
Así es como creamos variables de unión.
union car
{
char name[50];
int price;
};
int main()
{
union car car1, car2, *car3;
return 0;
}
Otra forma de crear variables de unión es:
union car
{
char name[50];
int price;
} car1, car2, *car3;
En ambos casos, las variables de unión car1 , coche2 , y un puntero de unión car3 de union car
tipo son creados.
Acceso a miembros de un sindicato
Usamos el .
operador para acceder a los miembros de un sindicato. Y para acceder a las variables de puntero, usamos el ->
operador.
En el ejemplo anterior,
- Para acceder al precio para
car1
,car1.price
se utiliza. - Para acceder al precio usando
car3
, ya sea(*car3).price
ocar3->price
se puede usar.
Diferencia entre uniones y estructuras
Tomemos un ejemplo para demostrar la diferencia entre uniones y estructuras:
#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;
}
Salida
size of union = 32 size of structure = 40
¿Por qué esta diferencia en el tamaño de las variables de unión y estructura?
Aquí, el tamaño de sJob es de 40 bytes porque
- el tamaño de
name[32]
es de 32 bytes - el tamaño de
salary
es de 4 bytes - el tamaño de
workerNo
es de 4 bytes
Sin embargo, el tamaño de uJob es de 32 bytes. Es porque el tamaño de una variable de unión siempre será el tamaño de su elemento más grande. En el ejemplo anterior, el tamaño de su elemento más grande (name[32]
), tiene 32 bytes.
Con un sindicato, todos los miembros comparten la misma memoria .
Ejemplo:Acceso a miembros de la Unión
#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;
}
Salida
Salary = 0.0 Number of workers = 100
Para saber dónde se usan las uniones, visite ¿Por qué necesitamos las uniones C?
Lenguaje C
- enumeraciones de Java
- Constructor de enumeración de Java
- C - Uniones
- Cómo dimensionar una válvula neumática
- La inteligencia artificial en el tamaño del mercado de fabricación alcanzará los 4.798 millones de dólares estadounidenses para 2026
- Corte de barras de aluminio a medida
- ¿Qué es una unión de tuberías?
- Cómo dimensionar un acondicionador de aire comercial
- ¿Qué tamaño de torno necesito para la armería?
- El tamaño importa para los receptores de aire
- ¿Cómo dimensiono un compresor de aire industrial?