IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
next up previous contents index
Next: Initialisation Up: Relations entre tableaux et Previous: Exercice

Sous-sections

   
Tableaux multidimensionnels

Déclarations

 

En C, un tableau multidimensionnel est considéré comme étant un tableau dont les éléments sont eux mêmes des tableaux. Un tableau à deux dimensions se déclare donc de la manière suivante :

int t[10][20];
Les mêmes considérations que celles que nous avons développées sur les tableaux à une dimension s'appliquent, à savoir :

1.
à la déclaration, le compilateur allouera une zone mémoire permettant de stocker de manière contiguë 10 tableaux de 20 entiers, soit 200 entiers ;
2.
toute référence ultérieure à t sera convertie en l'adresse de sa première ligne, avec le type pointeur vers tableau de 20 int.

Accès aux éléments

  L'accès à un élément du tableau se fera de préférence par l'expression t[i][j].

   
Passage en paramètre

Lorsqu'on désire qu'un paramètre formel soit un tableau à deux dimensions, il faut le déclarer comme dans l'exemple suivant :

#define N 10

p(int t[][N])
{
...   /*  corps de p   */
}
On peut en effet omettre la taille de la première dimension, mais il est nécessaire d'indiquer la taille de la seconde dimension, car le compilateur en a besoin pour générer le code permettant d'accéder à un élément. En effet, si T est la taille des éléments de t, l'adresse de t[i][j] est : adresse de $t + (i \times N + j) \times T$. Le compilateur à besoin de connaître N, ce sera donc une constante. Par contre, la taille de la première dimension pourra être passée en paramètre, comme nous l'avons fait pour les tableaux à une seule dimension. Exemple :
#define P 10

void raz_mat(int t[][P], int n)
{
int i,j;

for (i = 0; i < n; i++)
   for (j = 0; j < P; j++)
      t[i][j] = 0;
}
raz_mat ne sera appliquable qu'à des tableaux dont la première dimension à une taille quelconque, mais dont la seconde dimension doit impérativement avoir P éléments.


next up previous contents index
Next: Initialisation Up: Relations entre tableaux et Previous: Exercice
Bernard Cassagne
1998-12-09