Programmation C · 5 min read · Oct 10, 2025

Apprendre C/C++ Étape par Étape - Page 11

11. Étape par Étape C/C++ — Programmation C - Unions

Unions

| | 1. Introduction

  1. À propos de Union
  2. Déclaration d’une Union
  3. Définir une Variable Union
  4. Différence entre Structure et Union
  5. Opérations sur les Unions
  6. Portée d’une Union |

1. Introduction

| | / 81_union.c /
#include
struct s_emp
{
int eno;
char name[20];
float sal;
};
union u_emp
{
int eno;
char name[20];
float sal;
};
int main()
{
struct s_emp se;
union u_emp ue;
printf(“\nTaille de la structure Employé    :  %d”, sizeof(se));
printf(“\nTaille de l’Union Employé      :  %d”, sizeof(ue));
return 0;
} | | | Sortie : Taille de la Structure Employé : 26
Taille de l’Union Employé : 20 |

2. À propos de Union

Lorsqu’un grand nombre de variables sont demandées pour être utilisées dans un programme. Elles occupent une grande quantité de mémoire. Les Unions fournissent un moyen facile d’économiser de la mémoire en utilisant la technique de remplacement. Elles utilisent le même emplacement mémoire pour tous les types de variables.

Une union est un type de données en C, qui permet le chevauchement de plus d’une variable dans la même zone mémoire.

Caractéristiques des Unions :

| | 1. L’Union stocke des valeurs de différents types dans un seul emplacement en mémoire.

  1. Une union peut contenir un des nombreux types de valeurs mais seulement un est stocké à la fois.
  2. L’union ne conserve qu’une valeur pour un type de données. Si une nouvelle affectation est faite, la valeur précédente n’a plus de validité.
  3. Un nombre quelconque de membres d’union peut être présent. Mais la variable de type union prend la plus grande mémoire occupée par ses membres. |

3. Déclaration d’une Union

L’Union est un type de données par lequel des objets de différents types et tailles peuvent être stockés à différents moments. La définition d’une Union est la même qu’une Structure. Le seul changement dans la déclaration est la substitution du mot-clé union au mot-clé struct.

| | |

Exemple :

| | union ddate
{
int day;
int month;
int year;
}; | union student
{
int sno;
char name[20];
int marks;
float avg;
}; |

4. Définir une Variable Union

Définir une variable Union est la même que pour une structure et que pour définir un type de données intégré tel que int.

| | int a; / Valide /
union date d; / Valide en C et C++ / |

Calcul de la taille de l’Union

Chaque type de données en C/C++ a une taille spécifiée, c’est-à-dire que int a 2 octets de taille, float a 4 octets de taille, et ainsi de suite. Voici comment trouver la taille d’une variable Union.
sizeof : Cette fonction est utilisée pour trouver la taille d’une variable donnée.

| | printf(“%d”, sizeof(int)); / 2 /
printf(“%d”, sizeof(float)); / 4 /
printf(“%d”, sizeof(union emp)); / Affiche la taille de l’union emp / |

5. Différence entre Structures et Unions

Voici la différence entre Structures et Unions

StructureUnion **
1. Elle peut contenir différents types (variables) dans un seul emplacement.1. Elle peut contenir différents types (variables) dans différents emplacements.
2. Elle peut contenir plus d’un type (variable) mais seulement un est stocké à la fois.2. Elle peut contenir plus d’un type (variable) tous sont stockés en mémoire à la fois.
3. Un nombre quelconque de membres d’union peut être présent. Mais la variable de type union prend la plus grande mémoire occupée par son membre.3. Elle nécessite la mémoire de la taille de tous ses membres.
4. Dans son processus, seul un membre peut être accédé à un moment donné.4. Dans son processus, tous les membres peuvent être accessibles à tout moment.
5. La portée de l’union est la fonction et la portée de ses membres est également la même que l’union elle-même. (Ils peuvent être accessibles directement dans le programme).5. La portée de la Structure est uniquement la fonction. Les membres de la Structure ne peuvent pas être accessibles directement dans le programme.

6. Opérations sur les Unions

Une union est également similaire à une structure, elle peut effectuer toutes les opérations comme les structures. Les opérations sur l’Union sont listées ci-dessous.

| | • Une variable union peut être assignée à une autre variable union.
• Une variable Union peut être passée à une fonction comme paramètre
• L’adresse de la variable union peut être extraite en utilisant l’opérateur d’adresse (&).
• Une fonction peut accepter et retourner une union ou un pointeur vers une union. |

| | / 82_union.c /
#include
union u_emp
{
int eno;
char name[20];
float sal;
};
int main()
{
union u_emp ue;
printf(“Entrez le Numéro de l’Employé  : “); scanf(“%d”, &ue.eno);
printf(“Entrez le Nom de l’Employé   : “); scanf(“%s”, ue.name);
printf(“Entrez le Salaire de l’Employé  : “); scanf(“%f”, &ue.sal);
printf(“\n\nLes Détails de l’Employé sont les suivants…\n”);
printf(“%d %s %f “, ue.eno, ue.name, ue.sal);
return 0;
} |

| | Quelle est la sortie ?
Seul ue.sal est correct. Qu’en est-il des autres variables. |

À tout instant, seule l’une des variables de l’union aura une valeur significative. Seul ce membre, qui a été écrit en dernier, peut être lu. À ce stade, d’autres variables contiendront des déchets. Il est de la responsabilité du programmeur de garder une trace de la variable active (c’est-à-dire la variable qui a été accédée en dernier).

Voici le meilleur moyen d’accepter et d’afficher les enregistrements d’un employé.

| | / 83_emp.c /
#include
union u_emp
{
int eno;
char name[20];
float sal;
};
int main()
{
union u_emp ue;
printf(“\nEntrez le Numéro de l’Employé  : “); scanf(“%d”, &ue.eno);
printf(“\n%d”, ue.eno);
printf(“\nEntrez le Nom de l’Employé : “); scanf(“%s”, ue.name);
printf(“\n%s”, ue.name);
printf(“\nEntrez le Salaire de l’Employé  : “); scanf(“%f”, &ue.sal);
printf(“\n%f”,ue.sal);
return 0;
} |

7. Portée d’une Union

La portée de l’union est différente de celle de la structure. Une variable de structure ne peut être accédée que par ses fonctions. Alors qu’une union et ses membres peuvent être accessibles par sa fonction.

| | / 84_scope.c /
#include
int main()
{
union
{
int i;
char c;
float f;
};
i = 10; c = ‘a’; f = 4.5; / Membres de l’Union /
printf(“La valeur de c est : %c”, c);
return 0;
} |

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.