Latest web development tutorials

C union

Union est un type spécial de données, vous permettant à un autre emplacement dans le même type de données stockées dans la mémoire.Vous pouvez définir une union avec d'autres membres, mais chaque fois il peut y avoir qu'un seul membre de la valeur. Les syndicats constituent un moyen d'utiliser le même emplacement de mémoire d'une manière efficace.

Définition de l'union

Pour définir une union, vous devez utiliser les déclarationssyndicales, et de définir la structure d'une manière similaire.instruction union définit un nouveau type de données, avec une pluralité de membres. format de déclaration de l'Union est la suivante:

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

tag union est facultative, chaque définition de membre est la définition standard d'une variable, comme int i; ou float f; ou d' autres définitions de variables valides.Avant la fin de la virgule final corps commun défini, vous pouvez spécifier une ou plusieurs des variables du syndicat, qui est facultative. La définition suivante d'un type de corps commun nommé données, il y a trois membres i, f et str:

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

Maintenant, le typede données variable peut stocker un nombre entier, un flotteur, ou une chaîne.Cela signifie qu'une variable (le même emplacement de mémoire) peut stocker une pluralité de différents types de données. Vous pouvez utiliser tous les types de données intégrés ou définis par l'utilisateur dans un corps commun selon les besoins.

Union devrait être assez de mémoire de stockage occupé par le plus grand membre de l'union. Par exemple, dans l'exemple ci-dessus, les données occupent 20 octets d'espace mémoire, parce que chaque membre, l'espace occupé par la chaîne est le plus grand. L'exemple suivant montrera l'union ci-dessus a occupé la taille totale de la mémoire:

#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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Memory size occupied by data : 20

membre du syndicat d'accès

Afin d'accéder aux pays membres communs, nous utilisonsl'opérateur d'accès membre (.).opérateur d'accès membre est une période de noms de variables et les membres du syndicat de notre syndicat pour être accessible entre les deux. Vous pouvez utiliser le mot - clé pour définir des variables de type unionsyndicale.L'exemple suivant illustre l'utilisation d'une union:

#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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

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

Ici , nous pouvons voir les valeurs des membresi et fsyndicaux sont endommagés, parce que les valeurs affectées aux variables du dernier emplacement de mémoire occupé, qui sont les membresde strraison à la sortie intacte. Maintenant, regardons une seule et même instance, cette fois, nous utilisons une seule variable dans le même temps, il montre aussi le but principal de l'utilisation d'une union:

#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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

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

Ici, tous les membres peut sortir intacte, parce que dans le même temps utilise un seul membre.