Programmation en C – Pointeur d’un pointeur

Un pointeur vers un pointeur est une forme d’indirection multiple. Normalement, un pointeur contient l’adresse d’une variable. Lorsque nous définissons un pointeur sur un pointeur, le premier pointeur contient l’adresse du second pointeur, qui pointe vers l’emplacement qui contient la valeur comme indiqué ci-dessous.

Programmation en C - Pointeur d'un pointeur

 

 

Un pointeur sur un pointeur doit être déclarée comme nous faisons pour déclarer un simple pointeur. Ceci est fait en plaçant une étoile supplémentaire devant son nom. Par exemple, la déclaration suivante déclare un pointeur sur un pointeur de type int

int **p;

Lorsqu’une valeur cible est indirectement pointée par un pointeur de pointeur, l’accès à cette valeur nécessite que l’opérateur * soit appliqué deux fois, comme illustré ci-dessous dans l’exemple

#include <stdio.h>
 
int main () {

   int  var;
   int  *p;
   int  **pp;

   var = 5000;

   /* prend l'adresse de var */
   p = &var;

   /* prend l'adresse de p en utilisant l'opérateur & */
   pp = &p;

   /* prend la valeur en utilisant pp*/
   printf("Valeur de var = %dn", var );
   printf("Valeur disponible à *p = %dn", *p );
   printf("Valeur disponible à **pp = %dn", **pp );

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

Valeur de var = 5000
Valeur disponible à *p = 5000
Valeur disponible à **pp = 5000

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.