la notion de tableau en C est plutot floue (confusion avec les pointeurs) donc la notion de tableau de tableau se construirait alors comme
int tab1[20];
int tab2[20];
int tab3[20];
etc.
int *tab[10] = { tab1, tab2, tab3, etc.};
l'utilisation serait alors tab[8][15]... par exemple...
Toutefois ce genre de construction compliquee ne presente d'interet que si les tabx ne sont pas tous de la meme taille, ou s'ils sont issus d'allocation dynamique...
en pratique un tab[10][20] est bien plus simple. Meme si l'ecriture laisse presager un tableau de tableau, il s'agit bien d'un tableau a deux dimentions...
Ou est la difference ?
au niveau des pointeurs, un tableau, en C, est confondu avec un pointeur, un tableau de tableau est donc un pointeur de pointeur, or int tab[10][20] est un pointeur d'entier et non un pointeur de pointeur d'entier...