next up previous contents index
Next: La fonction main (2) Up: No Title Previous: Représentation des matrices par

Tableaux de chaînes de caractères

     

Comme une chaîne est une tableau de caractères, on peut représenter un tableau de chaînes comme un tableau de caractères à deux dimensions. Ceci oblige à spécifier la longueur des lignes, qui doit être la longueur de la plus longue chaîne plus un. Par exemple, la liste des premiers Turing awardsgif peut être représentée par le tableau bidimensionnel suivant :

char turing1[][16] = { 
  "Perlis",
  "Wilkes",
  "Hamming",
  "Minsky",
  "Wilkinson",
  "McCarthy",
  "Dijkstra",
  "Bachman",
  "Knuth",
  "Newell et Simon"
};

Dans ce cas, Turing[8] est un tableau de 16 caractères, qui occupe donc 16 octets, mais n'utilise que les 6 premiers pour stocker "Knuth" :

   figure2483
Figure: Tableau bidimensionnel de caractères

Il est préférable, pour des raisons d'occupation de la mémoire, de représenter un tableau de chaînes comme un tableau, à une dimension, de pointeurs :

char *turing2[] = { 
  "Perlis",
  "Wilkes",
  "Hamming",
  "Minsky",
  "Wilkinson",
  "McCarthy",
  "Dijkstra",
  "Bachman",
  "Knuth",
  "Newell et Simon"
};

L'objet turing2 est différent de l'objet turing1, n'utilisant pas l'espace mémoire de la même façon. La chaîne turing2[8] n'occupe plus maintenant que 6 octets :

   figure2495
Figure: Tableau de chaînes de caractères

Mais on accède toujours aux différents caractères par les mêmes expressions : turing2[8][0], a comme turing1[8][0] pour contenu le caractère 'K'. Ces tableaux de chaînes de caractères sont analogues à la représentation des matrices par des tableaux de pointeurs, à ceci près que les << lignes >> de la matrice n'ont maintenant plus la même taille.



Rene Lalement
Mon Sep 30 18:22:54 MET 1996