Structures en C

Qu'est-ce qu'une structure ?

Une structure sert à regrouper différents types de données sous un même ensemble. En C, vous pouvez définir une structure en utilisant le mot-clé struct. Voici la syntaxe à suivre :

struct NomDeLaStructure {
  type1 membre1;
  type2 membre2;
  type3 membre3;
  ...
  typeN membreN;
};

Chaque membre doit être déclaré avec un type spécifié.

Exemple de définition de structure

Prenons un exemple pour mieux comprendre : nous allons créer une structure pour un patient. La définition pourrait ressembler à ceci :

struct Patient {
  char nom[30];
  int age;
  int poids;
  int tailleEnPouces;
};

Dans cet exemple, nom, age, poids, et tailleEnPouces sont les membres de la structure Patient.

Création de variables de structure

Pour manipuler des données avec la structure Patient, on peut créer des variables. Voici comment déclarer et initialiser une variable de structure :

#include 
#include 
struct Patient {
  char nom[30];
  int age;
  int poids;
  int tailleEnPouces;
};

int main() {
  // Initialisation à la déclaration
  struct Patient patientA = {"Douglas Franklin", 62, 280, 74};
  return 0;
}

Accès aux membres d'une structure

Vous pouvez accéder aux membres d'une structure en utilisant l'opérateur .. Voici un exemple d'accès aux membres de notre structure Patient :

#include 
#include 
struct Patient {
  char nom[30];
  int age;
  int poids;
  int tailleEnPouces;
};

int main() {
  struct Patient patientA = {"Douglas Franklin", 62, 280, 74};
  // Affichage des membres
  printf("Nom : %s \nAge : %d \nPoids : %d \nTaille : %d\n", 
         patientA.nom, patientA.age, patientA.poids, patientA.tailleEnPouces);
  return 0;
}

Cela affichera : Nom : Douglas Franklin Age : 62 Poids : 280 Taille : 74

Structures imbriquées

Il est également possible d'imbriquer des structures les unes dans les autres. Pour accéder aux membres d'une structure imbriquée, on utilise à nouveau l'opérateur .. Examinons le code ci-dessous, qui ajoute une structure Hôpital comme membre de la structure Patient :

#include 
#include 
struct Hopital {
  char department[30];
  int numeroDeChambre;
};

struct Patient {
  char nom[30];
  int age;
  int poids;
  int tailleEnPouces;
  struct Hopital detailsChambre;
};

int main() {
  struct Patient patientA = {"Douglas Franklin", 62, 280, 74, {"oncologie", 526}};
  // Accès aux membres de la structure imbriquée
  printf("Département : %s \nChambre : %d \n", patientA.detailsChambre.department, patientA.detailsChambre.numeroDeChambre);
  return 0;
}

Le résultat sera : Département : oncologie Chambre : 526