C Unions
Unionsest un type de données spécial qui vous permet de stocker différents types de données au même emplacement mémoire. Vous pouvez définir une union avec de nombreux membres, mais un seul membre peut avoir une valeur à un moment donné. Les unions offrent un moyen efficace d'utiliser le même emplacement mémoire.
Définition d'une union
Pour définir une union, vous devez utiliser l'instructionunion, d'une manière similaire à la définition d'une structure. L'instruction union définit un nouveau type de données avec plusieurs membres. Le format de l'instruction union est le suivant :
L'étiquette d'unionest facultative. Chaque définition de membre est une définition de variable standard, comme int i; ou float f; ou d'autres définitions de variable valides. À la fin de la définition de l'union, avant le dernier point-virgule, vous pouvez spécifier une ou plusieurs variables de type union, ce qui est facultatif. Ce qui suit définit un type union nommé Data avec trois membres i, f et str :
Maintenant,DataUne variable de ce type peut stocker un entier, un nombre à virgule flottante ou une chaîne de caractères. Cela signifie qu'une variable (le même emplacement mémoire) peut stocker plusieurs données de types différents. Vous pouvez utiliser tout type de données intégré ou défini par l'utilisateur dans une union selon vos besoins.
La mémoire occupée par une union doit être suffisante pour stocker le plus grand membre de l'union. Par exemple, dans l'instance ci-dessus, Data occupera 20 bytes d'espace mémoire, car parmi les membres, la chaîne occupe le plus grand espace. L'instance suivante montrera la taille totale de mémoire occupée par l'union ci-dessus :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produira les résultats suivants :
Memory size occupied by data : 20
Accéder aux membres d'une union
Pour accéder à un membre d'une union, nous utilisonsl'opérateur d'accès aux membres (.). L'opérateur d'accès aux membres est un point entre le nom de la variable union et le membre de l'union auquel nous voulons accéder. Vous pouvez utiliser le mot-cléunionpour définir des variables de type union. L'instance suivante montre l'utilisation d'une union :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produira les résultats suivants :
data.i : 1917853763 data.f : 4122360580327794860452759994368.000000 data.str : C Programming
Ici, nous pouvons voir pourquoi la valeur du membre de l'unionietfest corrompue, car la valeur affectée en dernier à la variable occupe l'emplacement mémoire. C'est aussi ainsi que les membresstrpeuvent être affichés complètement et correctement. Voyons maintenant un autre exemple identique. Cette fois, nous n'utilisons qu'une seule variable à la fois, ce qui démontre également l'objectif principal de l'utilisation d'une union :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produira les résultats suivants :
data.i : 10 data.f : 220.500000 data.str : C Programming
Ici, tous les membres peuvent être affichés intacts, car un seul membre est utilisé à la fois.
autres extensions