Programmation en C – Tableau de pointeurs
Avant de commencer, considérons l’exemple suivant, qui utilise un tableau de 4 entiers :
#include <stdio.h> const int MAX = 4; int main () { int tab[] = {20, 200, 2000}; int i; for (i = 0; i < MAX; i++) { printf("Valeur de tab[%d] = %dn", i, tab[i] ); } return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Valeur de tab[0] = 20 Valeur de tab[1] = 200 Valeur de tab[2] = 2000 Valeur de tab[3] = 3
Il peut y avoir une situation où nous voulons maintenir un tableau, qui peut stocker des pointeurs vers un entier ou un caractère ou tout autre type de données. Voici la déclaration d’un tableau de pointeurs à un nombre entier
int *ptab[MAX];
Ici, on déclare ptab comme un tableau de pointeurs de MAX entiers. Ainsi, chaque élément dans ptab, contient un pointeur sur une valeur int. L’exemple suivant utilise quatre entiers, qui sont stockés dans un tableau de pointeurs, comme suit
#include <stdio.h> const int MAX = 3; int main () { int tab[] = {20, 200, 2000}; int i, *ptab[MAX]; for ( i = 0; i < MAX; i++) { ptab[i] = &tab[i]; /* affecte l'adresse de l'entier. */ } for ( i = 0; i < MAX; i++) { printf("Valeur de tab[%d] = %dn", i, *ptab[i] ); } return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Valeur de tab[0] = 20 Valeur de tab[1] = 200 Valeur de tab[2] = 2000
Vous pouvez également utiliser un tableau de pointeurs sur des caractères pour stocker une liste de chaînes de caractères comme suit :
#include <stdio.h> const int MAX = 4; int main () { char *langages[] = { "Java", "C++", "Matlab", "Python" }; int i = 0; for ( i = 0; i < MAX; i++) { printf("Valeur de langages[%d] = %sn", i, langages[i] ); } return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Valeur de langages[0] = Java Valeur de langages[1] = C++ Valeur de langages[2] = Matlab Valeur de langages[3] = Python