Retour au cours

Les Unions et leurs cas d'utilisation

Langage C : de Zéro à Héros - Le Guide Complet pour Débutants

Leçon 45 : Les Unions et leurs cas d'utilisation

Une Union est similaire à une structure, mais avec une différence cruciale : tous les membres d'une union partagent le même emplacement mémoire.

Définir et utiliser une union

Règle : La taille d'une union est égale à la taille de son plus grand membre.

c union Donnees { int i; float f; char str[20]; };

int main() { union Donnees ma_donnee;

// La mémoire est assez grande pour le plus grand membre (str, 20 octets).
printf("Taille mémoire occupée par Donnees : %zu\n", sizeof(ma_donnee)); // Résultat : ~20

// 1. Affecter une valeur à 'i'
ma_donnee.i = 10; 
printf("ma_donnee.i : %d\n", ma_donnee.i); 

// 2. Affecter une valeur à 'f' (cela écrase la mémoire où 'i' était stocké)
ma_donnee.f = 220.5;
printf("ma_donnee.f : %f\n", ma_donnee.f); 

// 3. Tenter de lire 'i' maintenant donne une valeur résiduelle (mémoire écrasée)
printf("ma_donnee.i (après mise à jour de f) : %d\n", ma_donnee.i); 

return 0;

}

Cas d'utilisation

  1. Optimisation de la mémoire : Les unions sont utilisées lorsque vous savez qu'un seul des membres sera utilisé à la fois, économisant ainsi de l'espace.
  2. Type Punning : Utilisé en programmation de bas niveau pour interpréter le même bloc de mémoire de différentes manières (ex: lire un entier comme une séquence de caractères).