Map ou structure en C

Ammar Ali 12 octobre 2023
Map ou structure en C

Ce didacticiel abordera l’utilisation de la Map ou de la structure pour créer une collection de variables en C.

Map ou structure en C

Une structure est un ensemble de variables de types de données différents ou identiques. Par exemple, si nous voulons créer un profil pour une personne afin de stocker son âge, son nom et sa taille, nous pouvons utiliser la structure pour stocker toutes les informations sous une seule Map ou structure.

Nous pouvons utiliser le mot-clé struct pour créer des structures en langage C. La syntaxe de base d’une structure est donnée ci-dessous.

struct NameOfStructure {
  dataType_1 member_1;
  dataType_2 member_2;
  ....
};

Par exemple, créons une structure pour stocker les informations d’une personne. Voir le code ci-dessous.

struct Person {
  char *name;
  int age;
  float height;
};

Une structure est une classe que nous pouvons utiliser pour créer des objets contenant toutes les variables définies à l’intérieur de la structure. Il faut écrire le mot clé struct, puis le nom de la structure puis le nom de l’objet pour créer un objet de la structure.

Nous pouvons accéder à n’importe quel membre de la structure en utilisant le nom de l’objet et le nom de la variable attaché avec un point. Nous pouvons obtenir la valeur des variables ou modifier leur valeur à l’aide de l’opérateur d’affectation.

Par exemple, créons deux objets de la structure ci-dessus, stockons-y une valeur et imprimons-la à l’aide de la fonction printf(). Voir le code ci-dessous.

#include <stdio.h>

struct Person {
  char *name;
  int age;
  float height;
};

int main() {
  struct Person person1, person2;
  person1.name = "Max";
  person1.age = 20;
  person1.height = 6.2;
  printf("Person 1 name = %s\n", person1.name);
  printf("Person 2 name = %s", person2.name);
}

Production:

Person 1 name = Max
Person 2 name =

Dans le code ci-dessus, nous avons imprimé le nom des deux objets Person. Nous pouvons voir dans la sortie que le nom de la première personne est affiché, mais le nom de la deuxième personne n’est pas imprimé car nous n’avons enregistré aucun nom pour la deuxième personne.

Les valeurs des variables des deux objets de la structure peuvent être identiques ou différentes mais sont indépendantes. Nous pouvons également obtenir ou modifier les valeurs d’autres variables comme dans le code ci-dessus.

Nous pouvons également créer des structures à l’intérieur d’autres structures appelées structures imbriquées. Nous devons créer un objet de la structure que nous voulons attacher à l’autre structure, puis utiliser le nom de l’objet pour accéder à ses variables.

Par exemple, créons une autre structure et lions-la avec la structure ci-dessus. Voir le code ci-dessous.

#include <stdio.h>

struct job {
  char *name;
  int duration;
};
struct Person {
  struct job j;
  char *name;
  int age;
  float height;
};
int main() {
  struct Person person1, person2;
  person1.j.name = "Engineer";
  person1.name = "Max";
  person1.age = 20;
  person1.height = 6.2;
  printf("Person 1 job name = %s\n", person1.j.name);
  printf("Person 1 name = %s", person1.name);
}

Production:

Person 1 job name = Engineer
Person 1 name = Max

Dans le code ci-dessus, nous avons créé une autre structure pour stocker les informations sur le travail d’une personne et pour accéder à ses variables, nous devons d’abord accéder à la structure parente, qui est Person dans ce cas, puis nous pouvons accéder aux variables de la structure job.

Nous avons créé et relié deux structures, mais nous pouvons créer autant de structures que nous voulons et les relier entre elles.

Dans le cas d’un grand nombre de structures imbriquées, nous devons nous assurer que nous utilisons la bonne Map pour obtenir les informations d’une variable. Une structure est utile lorsque nous voulons stocker des informations sur de nombreux éléments, comme des informations sur les personnes et leur travail.

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook