Chapitre 17 : Énumérations et Unions¶
Explorez deux types de données spéciaux pour améliorer la clarté de votre code et optimiser l'utilisation de la mémoire.
Concepts abordés¶
- Énumérations (
enum) : Définir un type qui ne peut prendre que quelques valeurs nommées (ex: jours, couleurs, états). Cela rend le code beaucoup plus lisible que l'utilisation de simples entiers. - Unions (
union) : Un type spécial où tous les membres partagent la même adresse mémoire. Une union ne stocke qu'une seule valeur à la fois parmi ses différents membres. - Unions taguées : Combiner une
structet uneunionpour créer des variables capables de stocker différents types de données (type "variant").
Explications du code¶
enums_unions.c¶
Démontre l'utilisation des enum pour les jours de la semaine et les couleurs. Il présente également une union simple pour manipuler des nombres sous différents formats et une "union taguée" permettant de créer une variable pouvant contenir soit un entier, soit un flottant, soit une chaîne de caractères.
Conseils et astuces¶
- Enum vs #define : Préférez les
enumaux#definepour des listes de constantes liées. Lesenumsont reconnus par le débogueur, ce qui facilite grandement l'analyse du code. - Union et Mémoire : Utilisez les
unionpour économiser de la mémoire lorsque vous savez que plusieurs champs ne seront jamais utilisés simultanément. - Sécurité des Unions : Le compilateur ne garde pas trace du membre qui a été écrit en dernier dans une union. C'est à vous de gérer un "tag" (souvent un
enum) pour savoir ce que l'union contient réellement à un instant T.