Les tableaux à deux dimensions en C


 
  int tab2d[25][80];  /* déclaration d'un tableau à deux dimensions (25 lignes et 80 colonnes) d'entiers */     


Le compilateur C
réserve une zone contigüe en mémoire pour tout le tableau. Ainsi, il réserve une zone contigüe de 8000 octets (25 * 80 * 4) pour tab2d qui va contenir les lignes les unes derrière les autres.

Ainsi pour le tableau suivant:
int tailleL = 4;
int tailleC = 2;
int tab[tailleL][tailleC]={{6,78},{99,4},{5,90},{42,78}};

il va réserver une zone contigüe de 32 (2*4*4) octets comme suit:

tab2d[0][0]
tab2d[0][1] tab2d[1][0] tab2d[1][1] tab2d[2][0] tab2d[2][1] tab2d[3][0] tab2d[3][1]
6
78
99
4
5
90
42
78

ATTENTION (rappel): En C, il n'y a pas de vérification de débordement de tableau à l'exécution: par exemple, l'erreur suivante, tab2d[3][2]=2; ne sera pas détectée par le compilateur ni même à l'éxécution mais va écrire dans une zone de 4 octets en dehors du tableau.

Étendre à N dimensions.
On peut facilement étendre les tableaux à N dimensions
                int tab3d[10][4][5];                /*déclaration d'un tableau à 3 dimension */
                int tab5d[10][4][5][3][11];     /* déclaration d'un tableau à 5 dimensions */

       Par exemple le tableau des ventes des articles par mois et par vendeur sera un tableau à 3  dimensions ...
si on ajoute en plus par an, on obtient un tableau à 4 dimensions ...

suivant        plan