C Unión – Definición, declaración, elementos de Acceso

Aprender: ¿Cuál es union en lenguaje C, la forma en que se declara y define y cómo podemos acceder a los elementos de un union?

Uniones se puede suponer misma como estructuras pero con poca diferencia. sindicatos se pueden utilizar para crear un tipo de datos que contiene varios tipos de datos de otros en su interior y que pueden utilizar un objeto de esa union Para acceder a los miembros de su interior.

A continuación se muestra la declaración de un Union en C:

Union declaración

union tagname
{
int a;
char b;
};

Aquí, union es la palabra clave para declarar una union, tagname es el nombre union, un y b son los miembros de la union tagname .

Union declaración de variable / objeto

Ahora debemos crear un objeto para el union con el fin de acceder a los elementos en su interior. A continuación se muestra cómo podemos do que:

union tagname object;

Aquí, objeto es el nombre de la variable union, que se utilizará para acceder a los elementos de union.

elementos Acceso Union

Union elementos se puede acceder mediante dot (.) Operador, el uso union_variable_name.element_name para acceso elemento particular.

object.a= 10;
object.b= 'H';

Hasta ahora la union debe haber mirado mismo que las estructuras en C. Sin embargo, hay una gran diferencia entre la estructura y los sindicatos. Cuando creamos una estructura, la memoria asignada para ello se basa en los elementos dentro de la estructura. Así que si una estructura tiene dos elementos uno int y una char que el tamaño de esa estructura sería de al menos 5 bytes (si int toma 4 bytes y 1 byte es para char).

En case de la union el tamaño de memoria asignada es igual al tamaño del elemento que tiene mayor tamaño de .

Así que para el union por encima del tamaño sería sólo 4 bytes no 5 bytes.

Tome el siguiente ejemplo:

union tagname
{
int a;
char s;
char t;
};

En este case si creamos el objeto

union tagname object;

tamaño de este objeto debe ser de 4 bytes. Esta característica de los sindicatos da algunos beneficios, pero se debe tener cuidado while operar con los sindicatos. Dado que los es la memoria asignada igual al elemento más grande en el union, valores serán sobrescritos.

Tome el siguiente ejemplo para una mejor comprensión:

#include<stdio.h>
union tagname
{
int a;
char s;
char t;
};
union tagname object;
int main()
{
object.s='H';
object.t='E';
object.a=0xFFFF;
printf("%cn",object.s);
printf("%cn",object.t);
printf("%xn",object.a);
return 0;
}

salida



ffff

lo tanto, si el último elemento escrita es mayor que el tamaño de los elementos previamente escritas en el union, que uno podría no ser capaz para recuperar los valores de los valores previamente escritos.

A continuación se muestra el beneficio de la union:

#include<stdio.h>
union tagname
{
int a;
unsigned char s[4];
};
union tagname object;
int main()
{
object.a=0xAABBCCDD;
printf("%dn",sizeof(object));
printf("%Xn",object.a);
char i;
for(i=3;i>=0;i--)
printf("%Xn",object.s[i]);
return 0;
}

salida

4 
AABBCCDD
AA
BB
CC
DD


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *