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.



Matthieu Moy 2017-02-08