Différence entre structure et union en C

Qu'est-ce que Structurer ?

La structure est un type de données défini par l'utilisateur dans le langage de programmation C qui combine des éléments de données logiquement liés de différents types de données.

Tous les éléments de structure sont stockés à des emplacements mémoire contigus. La variable de type structure peut stocker plusieurs éléments de données de différents types de données sous un même nom.

Qu'est-ce que l'Union

L'union est un type de données défini par l'utilisateur, tout comme une structure. Union combine des objets de différents types et tailles. La variable union alloue un espace mémoire égal à l’espace pour contenir la plus grande variable d’union. Il permet à différents types d’objets de partager le même emplacement.

Syntaxe de déclaration de structure

struct [name of the structure]
   {
       type member1;
       type member2;
       type member3;
   };

La structure est déclarée à l'aide du mot-clé « struct » et du nom de la structure. Le numéro 1, le numéro 2 et le numéro 3 sont des membres individuels de la structure. La partie du corps se termine par un point-virgule (;).

Exemple de structure en programmation C

#include <stdio.h>
struct student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main() {
    printf("Enter the following information:\n");
    printf("Enter student name: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Enter student roll number: ");
    scanf("%d", & sdt. roll_no);
    printf("Enter students marks: ");
    scanf("%f", & sdt.marks);
    printf("The information you have entered is: \n");
    printf("Student name: ");
    printf("%s", sdt.name);
    printf("Student roll number: %d\n", sdt. roll_no);
    printf("Student marks: %.1f\n", sdt.marks);
    return 0;
}

Dans le programme ci-dessus, une structure appelée étudiant est créée. Cette structure comporte trois données membres : 1) nom (chaîne), 2) roll_no (entier) et 3) marques (flottant).

Après cela, une variable de structure sdt est créée pour stocker les informations sur les étudiants et les afficher sur l'écran de l'ordinateur.

Sortie :

Entrez le suiviwing informations:

Entrez le nom de l'étudiant : James

Entrez le numéro de matricule étudiant : 21

Saisir les notes des élèves : 67

Les informations que vous avez saisies sont :

Nom de l'élève : Jean

Numéro de matricule étudiant : 21

Notes des étudiants : 67.0

Syntaxe de la déclaration d'union

union [name of union]
    {
       type member1;
       type member2;
       type member3;
    };

L'union est déclarée à l'aide du mot-clé « union » et du nom de l'union. Le numéro 1, le numéro 2 et le numéro 3 sont des membres individuels du syndicat. La partie du corps se termine par un point-virgule (;).

Exemple d'union en programmation C

#include <stdio.h>

union item
{
    int x;
    float y;
    char ch;
};

int main( )
{
    union item it;
    it.x = 12;
    it.y = 20.2;
    it.ch = 'a';
    
    printf("%d\n", it.x);
    printf("%f\n", it.y);
    printf("%c\n", it.ch);
    
    return 0;
}

Sortie :

1101109601

20.199892

a

Dans le programme ci-dessus, vous pouvez voir que les valeurs de x et y sont corrompues. Seule la variable ch imprime le résultat attendu. En effet, dans l'union, l'emplacement mémoire est partagé entre tous les types de données membres.

Par conséquent, le seul membre de données dont la valeur est actuellement stockée occupera de l’espace mémoire. La valeur de la variable ch a enfin été stockée, donc la valeur du reste de la les variables est perdu.

Structure contre. syndicat

Structure contre. syndicat
Structure contre. syndicat

Voici la différence importante entre structure et union :

Structure syndicat
Vous pouvez utiliser un mot-clé struct pour définir une structure. Vous pouvez utiliser un mot-clé union pour définir une union.
Chaque membre de la structure se voit attribuer un emplacement mémoire unique. En union, un emplacement mémoire est partagé par tous les membres de données.
La modification de la valeur d’un membre de données n’affectera pas les autres données membres de la structure. La modification de la valeur d’un membre de données modifiera la valeur des autres données membres de l’union.
Il vous permet d'initialiser plusieurs membres à la fois. Il vous permet d'initialiser uniquement le premier membre de l'union.
La taille totale de la structure est la somme de la taille de chaque donnée membre. La taille totale de l’union est la taille du plus grand membre de données.
Il est principalement utilisé pour stocker divers types de données. Il est principalement utilisé pour stocker l’un des nombreux types de données disponibles.
Il occupe de l'espace pour chaque membre écrit dans les paramètres internes. Il occupe de l'espace pour un membre ayant la taille la plus élevée écrite dans les paramètres internes.
Vous pouvez récupérer n'importe quel membre à la fois. Vous pouvez accéder à un membre à la fois dans le syndicat.
Il prend en charge un tableau flexible. Il ne prend pas en charge un tableau flexible.

Avantages de la structure

Voici les avantages/avantages de l’utilisation de la structure :

  • Les structures rassemblent plusieurs éléments de données sur le même sujet au même endroit.
  • Ceci est utile lorsque vous souhaitez collecter des données de types de données et de paramètres similaires tels que le prénom, le nom, etc.
  • Il est très facile à gérer car nous pouvons représenter l’ensemble du dossier en utilisant un seul nom.
  • Dans la structure, nous pouvons transmettre un ensemble complet d'enregistrements à n'importe quelle fonction en utilisant un seul paramètre.
  • Vous pouvez utiliser un tableau de structures pour stocker davantage d'enregistrements avec des types similaires.

Avantages du syndicat

Voici les avantages/avantages de l’utilisation de Union :

  • Il occupe moins de mémoire que la structure.
  • Lorsque vous utilisez union, seule la dernière variable est directement accessible.
  • L'union est utilisée lorsque vous devez utiliser le même emplacement mémoire pour deux ou plusieurs données membres.
  • Il vous permet de conserver les données d’un seul membre de données.
  • Son espace alloué est égal à la taille maximale du membre de données.

Inconvénients de la structure

Voici les inconvénients/inconvénients de l’utilisation de la structure :

  • Si le complexLa réalité du projet informatique dépasse les limites, elle devient difficile à gérer.
  • La modification d'une structure de données dans un code nécessite des modifications à de nombreux autres endroits. Les changements deviennent donc difficiles à suivre.
  • La structure est plus lente car elle nécessite de l'espace de stockage pour toutes les données.
  • Vous pouvez récupérer n'importe quel membre à la fois dans la structure alors que vous pouvez accéder à un membre à la fois dans l'union.
  • La structure occupe de l'espace pour chaque membre écrit dans les paramètres internes tandis que l'union occupe l'espace pour un membre ayant la taille la plus élevée écrite dans les paramètres internes.
  • La structure prend en charge un tableau flexible. Union ne prend pas en charge un tableau flexible.

Inconvénients du syndicat

Voici les inconvénients/inconvénients de l’utilisation de union :

  • Vous ne pouvez utiliser qu'un seul membre du syndicat à la fois.
  • Toutes les variables d'union ne peuvent pas être initialisées ou utilisées avec des valeurs variables à la fois.
  • L'Union attribue un espace de stockage commun à tous ses membres.

DIFFÉRENCES CLÉS :

  • Chaque membre de la structure se voit attribuer un emplacement mémoire unique, tandis qu'en union, un emplacement mémoire est partagé par tous les membres de données.
  • La modification de la valeur d'un membre de données n'affectera pas les autres données membres de la structure, tandis que la modification de la valeur d'un membre de données modifiera la valeur des autres données membres de l'union.
  • La structure est principalement utilisée pour stocker divers types de données, tandis que l'union est principalement utilisée pour stocker l'un des nombreux types de données.
  • En structure, vous pouvez récupérer n'importe quel membre à la fois, tandis qu'en union, vous pouvez accéder à un membre à la fois.
  • La structure prend en charge un tableau flexible tandis que l'union ne prend pas en charge un tableau flexible.

Consultez également notre didacticiel C pour les débutants : - Cliquez ici