Structures en C++

Introduction aux Structures

En C++, une structure regroupe sous un même nom divers éléments de données. Ces éléments, également appelés membres de données, peuvent avoir des types différents.

Syntaxe de la Structure

Pour définir une structure, il faut suivre cette syntaxe :

  • Utiliser le mot-clé struct au début.
  • Encadrer le contenu de la structure avec des accolades { }.
  • Terminer par un point-virgule ;.

Voici la syntaxe générale :

struct nom {
  type_membre membre1;
  type_membre membre2;
  type_membre membre3;
};

Exemple de Structure

Prenons l'exemple d'une structure nommée programmeur :

struct programmeur {
  long id;
  char nom[30];
  char pseudo[15];
};

Cette structure contient trois membres : id, nom et pseudo.

Déclaration et Initialisation des Variables de Structure

Dans C++11 et les versions ultérieures, il est possible d'initialiser les membres d'une structure directement dans la définition. Voici comment déclarer et initialiser une variable de structure :

#include 
struct coordonnees {
  int x;
  int y;
};
int main() {
  // Déclaration de la variable c1
  struct coordonnees c1;
  c1.x = 2;
  c1.y = 2;

  // Déclaration et initialisation de la variable c2
  struct coordonnees c2 = {0, 1};

  std::cout << "x1 = " << c1.x << ", y1 = " << c1.y << "\n"; // Pour c1
  std::cout << "x2 = " << c2.x << ", y2 = " << c2.y << "\n"; // Pour c2
  return 0;
}

Un Tableau de Structures

Tout comme les types de données primitifs, on peut créer un tableau de structures. Voici un exemple :

#include 
struct coordonnees {
  int x;
  int y;
};
int main() {
  struct coordonnees c[4];
  int i;
  for (i = 0; i < 4; i++)
    std::cin >> c[i].x >> c[i].y;
  for (i = 0; i < 4; i++) {
    std::cout << "x" << i+1 << "=" << c[i].x << "\t";
    std::cout << "y" << i+1 << "=" << c[i].y << "\n";
  }
  return 0;
}

Entrée :

1 0 1 2 1 1 0 2

Sortie :

x1 = 1 y1 = 0 x2 = 1 y2 = 2 x3 = 1 y3 = 1 x4 = 0 y4 = 2

Structures Imbriquées

Une variable d'une structure peut également être membre d'une autre structure. L'exemple ci-dessous montre une structure DOB imbriquée dans une structure programmeur :

struct programmeur {
  long id;
  char nom[30];
  char pseudo[15];
  struct DOB {
    int mois;
    int jour;
    int an;
  } d;
};
struct programmeur bjarne;

// Initialisation d'un membre de la structure DOB
bjarne.d.jour = 10;

Pour accéder aux membres d'une structure imbriquée, on utilise la notation var1.var2.membre1.