Objective-C - Tableau de pointeurs

Avant de comprendre le concept de tableaux de pointeurs, considérons l'exemple suivant, qui utilise un tableau de 3 entiers -

#import <Foundation/Foundation.h>
 
const int MAX = 3;
 
int main () {
   int  var[] = {10, 100, 200};
   int i;
 
   for (i = 0; i < MAX; i++) {
      NSLog(@"Value of var[%d] = %d\n", i, var[i] );
   }
   return 0;
}

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

2013-09-14 00:22:57.136 demo[18206] Value of var[0] = 10
2013-09-14 00:22:57.136 demo[18206] Value of var[1] = 100
2013-09-14 00:22:57.136 demo[18206] Value of var[2] = 200

Il peut y avoir une situation où nous voulons maintenir un tableau, qui peut stocker des pointeurs vers un int ou un char ou tout autre type de données disponible. Voici la déclaration d'un tableau de pointeurs vers un entier -

int *ptr[MAX];

Cela déclare ptrcomme un tableau de pointeurs entiers MAX. Ainsi, chaque élément de ptr contient désormais un pointeur vers une valeur int. L'exemple suivant utilise trois entiers, qui seront stockés dans un tableau de pointeurs comme suit -

#import <Foundation/Foundation.h>
 
const int MAX = 3;
 
int main () {
   int  var[] = {10, 100, 200};
   int i, *ptr[MAX];
 
   for ( i = 0; i < MAX; i++) {
      ptr[i] = &var[i];   /* assign the address of integer. */
   }
   for ( i = 0; i < MAX; i++) {
      NSLog(@"Value of var[%d] = %d\n", i, *ptr[i] );
   }
   return 0;
}

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

2013-09-14 00:27:47.904 demo[3825] Value of var[0] = 10
2013-09-14 00:27:47.905 demo[3825] Value of var[1] = 100
2013-09-14 00:27:47.905 demo[3825] Value of var[2] = 200

Vous pouvez également utiliser un tableau de pointeurs vers un caractère pour stocker une liste de chaînes comme suit -

#import <Foundation/Foundation.h>
 
const int MAX = 4;
 
int main () {
   char *names[] = {"Zara Ali", "Hina Ali", "Nuha Ali", "Sara Ali",};
   int i = 0;
   for ( i = 0; i < MAX; i++) {
      NSLog(@"Value of names[%d] = %s\n", i, names[i] );
   }
   
   return 0;
}

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

2013-09-14 00:30:25.438 demo[13476] Value of names[0] = Zara Ali
2013-09-14 00:30:25.439 demo[13476] Value of names[1] = Hina Ali
2013-09-14 00:30:25.439 demo[13476] Value of names[2] = Nuha Ali
2013-09-14 00:30:25.439 demo[13476] Value of names[3] = Sara Ali