Introduction à C Union

L'union est un type de données défini par l'utilisateur en c, il permet de stocker différents éléments de données de différents types de données à stocker dans le même emplacement de mémoire. Il fournit un moyen efficace d'utiliser la mémoire, car un seul membre d'une union est accessible à un moment donné. Par conséquent, la taille d'une union à tout moment serait égale à la taille de son plus grand élément. Bien que l'union soit comme une structure, la principale différence est que dans une structure une mémoire séparée est allouée pour chaque membre de la structure tandis que dans l'union c'est une mémoire partagée qui est équivalente à la taille du plus grand membre.

Syntaxe:

Une union peut être définie comme ci-dessous.

union UnionName
(
UMember1;
UMember2;
UMember3;
) UnionReference;

Les membres de l'Union C sont accessibles en utilisant la référence «UnionReference». union est un mot-clé.

Exemple de struct et d'union dans l'allocation de mémoire:

Montrons la différence entre struct et union dans l'allocation de mémoire.

Code:

#include
struct samp_structure
(
char name1(30);
int e_id;
float e_slry;
char name2(60);
)s;
union s_union
(
char name1(30);
int e_id;
float saly;
)u;
int main()
(
printf("size of structure :%ld bytes \n", sizeof(s));
printf("size of union : %ld bytes\n", sizeof(u));
return 0;
)

Production:

Exemples de C Union

Voyons la mise en œuvre de l'Union C à l'aide des exemples mentionnés ci-dessous:

Exemple 1

Voici l'exemple pour définir une union C et accéder à ses membres.

Code:

#include
#include
union test (
int tint;
float tf;
char tstr(20);
);
int main( ) (
union test t;
t.tint = 100;
printf( "record.i : %d\n", t.tint);
t.tf= 200.5;
printf( "record.f : %f\n", t.tf);
strcpy( t.tstr, "Test");
printf( "record.str : %s\n", t.tstr);
return 0;
)

Sortie :

Exemple # 2

Ci-dessous est le même code que ci-dessus, sauf que les instructions d'impression ont été réorganisées.

Code:

#include
#include
union test (
int tint;
float tf;
char tstr(20);
);
int main( ) (
union test t;
t.tint = 100;
t.tf = 200.5;
strcpy( t.tstr, "Test");
printf( "record.i : %d\n", t.tint);
printf( "record.f : %f\n", t.tf);
printf( "record.str : %s\n", t.tstr);
return 0;
)

Production:

Si vous regardez attentivement la sortie, vous pouvez voir que des valeurs de déchets ont été attribuées pour int et float parce que la chaîne a été allouée à la mémoire, c'est-à-dire que les membres partagent la mémoire dans une union, le membre dont la valeur est actuellement stockée avoir accès à la mémoire.

Exemple # 3

L'union anonyme est une union qui n'est pas nommée, elle peut donc être utilisée dans n'importe quelle structure ou union imbriquée. Les membres du syndicat anonyme sont directement accessibles dans le cadre de leur définition. De même, la structure anonyme peut être utilisée à l'intérieur d'une union anonyme.

Syntaxe de l'union anonyme et de la structure comme suit:

// Anonymous union example
union
(
char anoUChar;
int anoUNum;
);
// Anonymous structure example
struct
(
char anoSChar;
int anoSNum;
);

Exemple d'union de structure anonyme dans une structure:

#include
struct testscope
(
// Anonymous union
union
(
char testChar;
int testNum;
int testNum2;
);
);
int main()
(
struct testscope ts;
ts.testNum = 65;
// Note that members of union are accessed directly
printf("testchar = %c, testnum = %d, testnum2 = %d", ts.testChar, ts.testNum, ts.testNum2);
return 0;
)

Production:

Le testchar a reçu la valeur «A» car la valeur récente dans la mémoire d'union est 65 qui a été affectée à testNum, par conséquent le caractère ASCII correspondant est imprimé.

Remarque: Les membres du syndicat sont accessibles directement.

Exemple de structure anonyme à l'intérieur d'une union:

#include
union testscope
(
// Anonymous union
struct
(
char testChar;
int testNum;
int testNum2;
);
);
int main()
(
union testscope ts;
ts.testNum = 65;
ts.testChar='V';
//Note: The members of struct are accessed directly
printf("testchar = %c, testnum = %d, testnum2 = %d", ts.testChar, ts.testNum, ts.testNum2);
return 0;
)

Production:

Conclusion

Ainsi, l'union aide à gérer efficacement la mémoire. L'inconvénient de l'union est que seule la dernière valeur entrée pour l'union sera uniquement disponible. Il doit être utilisé lorsque les membres du syndicat n'ont pas besoin d'être disponibles pour être consultés en même temps.

Articles recommandés

Ceci est un guide pour C Union. Nous discutons ici de l'introduction, de la syntaxe et des différents exemples d'union c avec implémentation de code. Vous pouvez également consulter les articles suivants pour en savoir plus-

  1. Mots-clés C
  2. Tableaux en programmation C
  3. Programme Palindrome en C ++
  4. Classes de stockage C