Latest web development tutorials

unión C

Unión es un tipo especial de datos, lo que le permite a una ubicación diferente en el mismo tipo de datos almacenados en la memoria.Se puede definir una unión con más miembros, pero en cualquier momento puede haber solamente un miembro que posea el valor. Uniones proporcionan una manera de utilizar la misma ubicación de memoria de una manera eficaz.

Definición de la unión

Para definir una unión, debe utilizar declaracionesdel sindicato, y definir la estructura de una manera similar.Declaración de la Unión define un nuevo tipo de datos, con una pluralidad de miembros. formato de declaración de la Unión es el siguiente:

union [union tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];  

etiqueta de unión es opcional, cada miembro de la definición es la definición estándar de una variable, como int i; o flotar f; u otras definiciones de variables válidos.Antes del final de la última coma cuerpo común definido, puede especificar una o más de las variables del sindicato, que es opcional. La siguiente definición de un tipo de cuerpo común denominado Datos, hay tres miembros I, F y str:

union Data
{
   int i;
   float f;
   char  str[20];
} data;  

Ahora, el tipode datos variable puede almacenar un número entero, punto flotante, o una cadena.Esto significa que una variable (la misma posición de memoria) puede almacenar una pluralidad de diferentes tipos de datos. Se puede utilizar cualquier tipo de datos integrados o definidos por el usuario en un cuerpo común, según sea necesario.

Unión debería ser suficiente memoria de almacenamiento ocupado por el miembro más grande de la unión. Por ejemplo, en el ejemplo anterior, los datos ocupan 20 bytes de espacio de memoria, ya que cada miembro, el espacio ocupado por la cadena es mayor. El siguiente ejemplo mostrará la unión anterior ocupaba el tamaño total de la memoria:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   printf( "Memory size occupied by data : %d\n", sizeof(data));

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Memory size occupied by data : 20

miembro del sindicato de acceso

Con el fin de acceder a los países miembros comunes, utilizamosel operador de acceso miembro (.).operador de acceso El usuario es un período de nombres de variables y miembros de la unión de nuestra unión para ser visitada entre. Se puede utilizar la palabra clave para definir las variables de tipo de uniónsindical.El siguiente ejemplo muestra el uso de un sindicato:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");

   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

Aquí podemos ver los valores de los miembros del sindicatoI y Fson dañados, ya que los valores asignados a las variables de la última posición de memoria ocupada, que son los miembrosstrrazón para la producción intacta. Ahora vamos a ver una y la misma instancia, esta vez usamos sólo una variable a la vez, sino que también demuestra el propósito principal del uso de un sindicato:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   printf( "data.i : %d\n", data.i);
   
   data.f = 220.5;
   printf( "data.f : %f\n", data.f);
   
   strcpy( data.str, "C Programming");
   printf( "data.str : %s\n", data.str);

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

data.i : 10
data.f : 220.500000
data.str : C Programming

Aquí, todos los miembros pueden emitir intacta, porque al mismo tiempo utiliza un solo miembro.