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.