Le fond du problème c'est que les tableaux à 2 dimensions, strictement parlant, n'existent pas en C. Ainsi:
1 2
|
int tableau[10][20] = {0}; |
définit et initialise un tableau de 10 tableaux de 20 ints. Ainsi, nous avons un tableau à 1 dimension contenant des éléments de type tableau de 20 ints. Lorsqu'on désire passer un tel tableau à une fonction, la fonction en question possède le prototype suivant:
type_retour fonction(int tab[][20]);
Ce qui est strictement équivalent à:
type_retour fonction(int (*tab)[20]);
L'argument tab reçoit donc à l'adresse d'un objet de type tableau de 20 ints correspondant à l'adresse du 1er élement du tableau 2D qu'on désire passer à la fonction. Pour plus de flexibilité et pour s'affranchir du besoin de devoir spécifier la taille du tableau pointé par tab, il faut utiliser l'allocation dynamique.
Thierry
Partager