Différence entre Structure et Union en C
Structure et Union sont des types de données définis par l’utilisateur dans le langage C et sont conceptuellement identiques. Pourtant, ils sont toujours différents, comme la façon dont la mémoire est allouée à leurs membres. Ils sont déclarés de la même façon mais ils fonctionnent différemment. Ils permettent à l’utilisateur de combiner différents types de données sous un seul nom. Alors qu’un emplacement de mémoire distinct est utilisé pour chaque membre lors de la déclaration des variables de structure, les différents membres d’une variable d’union partagent le même emplacement de mémoire.
Définition de Structure
Une structure est un type de données défini par l’utilisateur disponible dans C qui permet de combiner des éléments de données de différents types. Les structures sont utilisées pour représenter un enregistrement.
Pour définir une structure, vous devez utiliser l’instruction struct. L’instruction struct définit un nouveau type de données, avec plusieurs membres. Le format de l’instruction struct est le suivant:
struct [structure name] { member definition; member definition; ... member definition; };
Exemple:
struct employee{ char name[]; int age; char phone[]; double salary; } employee; //On peut utiliser les deux "name" et "age" simultanément struct employee emp; emp.name = "alex"; // OK emp.age = 24; // OK
Ici, «employee» est le nom de la structure et la variable «emp» est de type «employee». Les accolades fermantes doivent être suivies d’un point-virgule (;). Et alloue au moins (sizeof(string)+sizeof(int)+sizeof(string)+sizeof(double)) octets en mémoire pour chaque instance.
Définition de l’Union
L’union est un type de données spécial disponible dans C qui permet de stocker différents types de données dans le même emplacement de mémoire. Vous pouvez définir une union avec plusieurs membres, mais un seul membre peut contenir une valeur à un moment donné. Les unions offrent un moyen efficace d’utiliser le même emplacement de mémoire à des fins multiples.
Pour définir une union, vous devez utiliser la déclaration d’union de la même manière que lors de la définition d’une structure. La déclaration union définit un nouveau type de données avec plusieurs membres pour votre programme. Le format de la déclaration d’union est le suivant:
union [union name] { member definition; member definition; ... member definition; };
Exemple:
union employee{ char name[]; int age; char phone[]; double salary; } employee; //On ne peut pas utiliser les deux "name" et "age" à la fois union employee emp; emp.name = 'alex'; // OK emp.age = 24; // NON! cela affecte la valeur de emp.name!
Ici, «employee» est le nom de l’union et la variable «emp» est de type «employee». Les accolades fermantes doivent être suivies d’un point-virgule (;). Union ne prendra que la quantité de mémoire requise pour son membre le plus important donc la taille de la mémoire qui sera allouée est max(sizeof(string)+sizeof(int)+sizeof(string)+sizeof(double))
Différences clés entre Structure et Union
- Le mot-clé struct est utilisé pour définir une structure tandis que le mot-clé union est utilisée pour définir une union.
- Lorsqu’une variable est associée à une structure, le compilateur alloue la mémoire pour chaque membre. La taille de la structure est supérieure ou égale à la somme des tailles de ses membres. Les plus petits membres peuvent se terminer avec des octets de jeu inutilisés. Alors dans le cas d’union lorsqu’une variable est associée à une union, le compilateur alloue la mémoire en considérant la taille la plus grande de la mémoire. Ainsi, la taille de l’union est égale à la taille du plus grand membre.
- Chaque membre d’une structure se voit attribuer une zone de stockage unique, tandis que la mémoire allouée est partagée par les membres individuels dans le cas del’union.
- Dans Structure, l’adresse de chaque membre sera en ordre croissant Cela indique que la mémoire de chaque membre commencera à des valeurs de décalage différentes, alors que dans les unions, l’adresse est la même pour tous les membres d’une union. Cela indique que chaque membre commence à la même valeur de décalage.
- Dans Structure, la modification de la valeur d’un membre n’affectera pas les autres membres de la structure alors que l’union altérant la valeur de l’un des membres modifiera d’autres valeurs de membre.
- Dans la structure, chaque membre peut être consulté à la fois, tandis que dans les unions, un seul membre est accessible à la fois.
- Plusieurs membres d’une structure peuvent s’initialiser en une fois alors que dans les unions, seul le premier membre peut être initialisé.
Conclusion
Structure et union sont deux types de données contenant les membres de différents types. Dans une structure, vous pouvez donner des valeurs à tous ses membres. Dans un union, vous ne pouvez accéder qu’à un membre à la fois. En conséquence, la structure prend plus de mémoire que celle d’une union. Structure prend de la mémoire pour tous ses membres. Union ne prendra que la quantité de mémoire requise pour son membre le plus important.