Next: Initialisation
Up: Relations entre tableaux et
Previous: Exercice
Sous-sections
Tableaux multidimensionnels
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.
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

.
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: Initialisation
Up: Relations entre tableaux et
Previous: Exercice
Bernard Cassagne
1998-12-09