Quand un argument d'une fonction est un tableau pluridimensionnel, toutes les dimensions, sauf la première, doivent être spécifiées dans la déclaration de l'argument formel correspondant (la première dimension peut aussi être spécifiée, mais elle ne sera pas utilisée par le corps de la fonction). Par exemple, dans le cas d'un tableau tridimensionnel, on écrira :
double f(double t[][3][4]);
Les dimensions ne peuvent être spécifiées que par des constantes ; il est illégal de déclarer une fonction ainsi :
void f_illegal(int p, int q, double t[][p][q]);
Comme dans le cas unidimensionnel, il est préférable de passer en argument, séparément, la taille de la première dimension (sauf si l'on travaille toujours avec des tableaux de même taille, fixe)
double f(int m, double t[][3][4]);
et d'appeler f(2,t) si l'on sait que  t est un tableau
 
 .  Le  corps de f  pourra utiliser la valeur
m de m  pour accéder aux  t[i] pour  
 . Le fait  de spécifier la taille  des autres dimensions permet
au  corps de   f   de connaître  la   taille  de t[0],
t[1],   ..., qui est  
  dans cet exemple,
donc            d'accéder       correctement     aux            éléments
t[i][j][k].
Ces contraintes rendent les tableaux à plusieurs dimensions difficilement utilisables dans des bibliothèques. On verra deux autres méthodes pour implémenter des matrices : par des tableaux à une dimension, et par des tableaux de pointeurs.