Objective-C - Pointeur vers pointeur

Un pointeur vers un pointeur est une forme d'indirection multiple ou une chaîne de pointeurs. Normalement, un pointeur contient l'adresse d'une variable. Lorsque nous définissons un pointeur vers un pointeur, le premier pointeur contient l'adresse du deuxième pointeur, qui pointe vers l'emplacement qui contient la valeur réelle comme indiqué ci-dessous.

Une variable qui est un pointeur vers un pointeur doit être déclarée comme telle. Cela se fait en plaçant un astérisque supplémentaire devant son nom. Par exemple, voici la déclaration pour déclarer un pointeur vers un pointeur de type int -

int **var;

Lorsqu'une valeur cible est indirectement pointée par un pointeur vers un pointeur, l'accès à cette valeur nécessite que l'opérateur astérisque soit appliqué deux fois, comme indiqué ci-dessous dans l'exemple -

#import <Foundation/Foundation.h>
 
int main () {
   int  var;
   int  *ptr;
   int  **pptr;

   var = 3000;

   /* take the address of var */
   ptr = &var;

   /* take the address of ptr using address of operator & */
   pptr = &ptr;

   /* take the value using pptr */
   NSLog(@"Value of var = %d\n", var );
   NSLog(@"Value available at *ptr = %d\n", *ptr );
   NSLog(@"Value available at **pptr = %d\n", **pptr);

   return 0;
}

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

2013-09-14 00:41:45.687 demo[22087] Value of var = 3000
2013-09-14 00:41:45.687 demo[22087] Value available at *ptr = 3000
2013-09-14 00:41:45.687 demo[22087] Value available at **pptr = 3000