Tableau de pointeurs

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En programmation C, un tableau de pointeurs est un tableau dans lequel chaque élément est un pointeur vers un autre type de données, tel que int, char, float, etc. Dans ce laboratoire, nous allons apprendre à accéder à un tableau de pointeurs sur des entiers et à un tableau de pointeurs sur des caractères.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/constants("Constants") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/constants -.-> lab-123201{{"Tableau de pointeurs"}} c/for_loop -.-> lab-123201{{"Tableau de pointeurs"}} c/arrays -.-> lab-123201{{"Tableau de pointeurs"}} c/pointers -.-> lab-123201{{"Tableau de pointeurs"}} c/output -.-> lab-123201{{"Tableau de pointeurs"}} end

Tableau de pointeurs sur des entiers

Dans cette étape, nous allons accéder à un tableau de pointeurs sur des entiers. Ouvrez le fichier main.c dans le répertoire ~/project/ et collez le code suivant :

#include <stdio.h>

// Déclaration globale.
const int MAX = 5;

int main() {
  printf("\n\n\t\t==== Tableau de pointeurs sur des entiers ====\n\n\n");

  int var[] = {10, 20, 30, 40, 50}; // initialisant un tableau (ici var) de pointeurs sur des entiers
  int i = 0;

  /*
      ptr est un tableau de pointeurs sur des entiers, c'est-à-dire
      qu'il stocke l'adresse de chaque élément du tableau
  */
  int *ptr[MAX];

  for(i = 0; i < MAX; i++) {
    /*
        Affecte l'adresse de chaque élément du tableau
        à la table ptr
    */
    ptr[i] = &var[i];
  }

  for(i = 0; i < MAX; i++) {
    /*
        ptr[i] stocke l'adresse de l'élément var[i].
        Par conséquent, *ptr[i] renvoie la valeur de l'élément
        stocké à l'emplacement ptr[i]
    */
    printf("Valeur de var[%d] = %i\n\n", i, *ptr[i]);
  }

  printf("\n\n\t\t==== Fin du programme ====\n\n\n");
  return 0;
}

Ce programme initialise un tableau de pointeurs sur des entiers et affecte l'adresse de chaque élément du tableau au tableau de pointeurs. Ensuite, il imprime la valeur de chaque élément en utilisant le tableau de pointeurs.

Tableau de pointeurs sur des caractères

Dans cette étape, nous allons accéder à un tableau de pointeurs sur des caractères. Collez le code suivant après le code de l'étape précédente :

#include <stdio.h>

// Déclaration globale.
const int MAX = 4;

int main() {
  printf("\n\n\t\t==== Tableau de pointeurs sur des caractères ====\n\n\n");

  char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // initialisant un tableau (ici names) de pointeurs sur des caractères
  int i = 0;

  for(i = 0; i < MAX; i++) {
    printf("Valeur de names[%d] = %s\n\n", i, names[i]);
  }

  printf("\n\n\t\t==== Fin du programme ====\n\n\n");
  return 0;
}

Ce programme initialise un tableau de pointeurs sur des caractères et affecte l'adresse du premier caractère de chaque chaîne au tableau de pointeurs. Ensuite, il imprime le nom complet de chaque élément en utilisant le tableau de pointeurs.

Compiler et exécuter le programme

Dans cette étape, nous allons compiler et exécuter le programme. Ouvrez le terminal et accédez au répertoire ~/project/. Tapez la commande suivante pour compiler le programme :

gcc main.c -o main

Après une compilation réussie, tapez la commande suivante pour exécuter le programme :

./main

Cette commande exécutera le programme et affichera la sortie sur le terminal :

		==== Tableau de pointeurs sur des entiers ====


Valeur de var[0] = 10

Valeur de var[1] = 20

Valeur de var[2] = 30

Valeur de var[3] = 40

Valeur de var[4] = 50


		==== Tableau de pointeurs sur des caractères ====


Valeur de names[0] = Google

Valeur de names[1] = Amazon

Valeur de names[2] = Facebook

Valeur de names[3] = Apple


		==== Fin du programme ====

Code complet

#include <stdio.h>

// Déclaration globale.

const int MAX = 5;

int main() {
  printf("\n\n\t\t==== Tableau de pointeurs sur des entiers ====\n\n\n");

  int var[] = {10, 20, 30, 40, 50}; // initialisant un tableau (ici var) de pointeurs sur des entiers
  int i = 0;

  /*
      ptr est un tableau de pointeurs sur des entiers, c'est-à-dire
      qu'il stocke l'adresse de chaque élément du tableau
  */
  int *ptr[MAX];

  for(i = 0; i < MAX; i++) {
    /*
        Affecte l'adresse de chaque élément du tableau
        à la table ptr
    */
    ptr[i] = &var[i];
  }

  for(i = 0; i < MAX; i++) {
    /*
        ptr[i] stocke l'adresse de l'élément var[i].
        Par conséquent, *ptr[i] renvoie la valeur de l'élément
        stocké à l'emplacement ptr[i]
    */
    printf("Valeur de var[%d] = %i\n\n", i, *ptr[i]);
  }

  printf("\n\n\t\t==== Tableau de pointeurs sur des caractères ====\n\n\n");

  char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // initialisant un tableau (ici names) de pointeurs sur des caractères
  i = 0;

  for(i = 0; i < MAX; i++) {
    printf("Valeur de names[%d] = %s\n\n", i, names[i]);
  }

  printf("\n\n\t\t==== Fin du programme ====\n\n\n");
  return 0;
}

Récapitulatif

Dans ce laboratoire, nous avons appris à accéder à un tableau de pointeurs sur des entiers et à un tableau de pointeurs sur des caractères. Un tableau de pointeurs est un tableau dans lequel chaque élément est un pointeur vers un autre type de données. Nous avons appris comment initialiser un tableau de pointeurs, comment assigner les adresses des éléments du tableau à un tableau de pointeurs et comment accéder aux éléments du tableau à l'aide du tableau de pointeurs.