Retour Suite Index

9.4. Tableaux de pointeurs

Note au lecteur

Si la notion de pointeurs vous était nouvelle jusqu'ici, alors sautez les sections 9.4 et 9.5 de ce chapitre et les exercices correspondants. Traitez d'abord le chapitre suivant jusqu'à ce que les notions de pointeurs et d'adresses se soient bien consolidées.

Si nous avons besoin d'un ensemble de pointeurs du même type, nous pouvons les réunir dans un tableau de pointeurs.

Déclaration

Déclaration d'un tableau de pointeurs


<Type> *<NomTableau>[<N>]
déclare un tableau <NomTableau> de <N> pointeurs sur des données du type <Type>.

Exemple


      double *A[10];
déclare un tableau de 10 pointeurs sur des rationnels du type double dont les adresses et les valeurs ne sont pas encore définies.

Remarque

Le plus souvent, les tableaux de pointeurs sont utilisés pour mémoriser de façon économique des chaînes de caractères de différentes longueurs. Dans la suite, nous allons surtout considérer les tableaux de pointeurs sur des chaînes de caractères.

Initialisation

Nous pouvons initialiser les pointeurs d'un tableau sur char par les adresses de chaînes de caractères constantes.

Exemple


  char *JOUR[] = {"dimanche", "lundi", "mardi", 
                  "mercredi", "jeudi", "vendredi", 
                  "samedi"};
déclare un tableau JOUR[] de 7 pointeurs sur char. Chacun des pointeurs est initialisé avec l'adresse de l'une des 7 chaînes de caractères.

On peut afficher les 7 chaînes de caractères en fournissant les adresses contenues dans le tableau JOUR à printf (ou puts) :

  int I;
  for (I=0; I<7; I++) printf("%s\n", JOUR[I]);

Comme JOUR[I] est un pointeur sur char, on peut afficher les premières lettres des jours de la semaine en utilisant l'opérateur 'contenu de' :


  int I;
  for (I=0; I<7; I++) printf("%c\n", *JOUR[I]);

L'expression JOUR[I]+J désigne la J-ième lettre de la I-ième chaîne. On peut afficher la troisième lettre de chaque jour de la semaine par:

  int I;
  for (I=0; i<7; I++) printf("%c\n",*(JOUR[I]+2));

Résumons: Les tableaux de pointeurs int *D[];
déclare un tableau de pointeurs sur des éléments du type int

D[i] peut pointer

sur des variables simples ou


sur les composantes d'un tableau.




D[i]
désigne l'adresse contenue dans l'élément i de D


(Les adresses dans D[i] sont variables)

*D[i]
désigne le contenu de l'adresse dans D[i]

Si D[i] pointe dans un tableau,

D[i]

désigne l'adresse de la première composante


D[i]+j
désigne l'adresse de la j-ième composante


*(D[i]+j)
désigne le contenu de la j-ième composante

Retour Suite Index