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] |
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