Tableaux multidimensionnels (c)
Une expression d'indice peut également avoir indices multiples, comme suit :
expression1 [expression2] [expression3]...
Les expressions en indice sont autorisées s'associent de gauche à droite.L'expression d'indice extrême gauche, expression1**[expression2], est évaluée en premier.l'adresse qui résulte d'ajouter expression1 et expression2 forme une expression de pointeur ; ensuite expression3 est ajouté à cette expression de pointeur pour former une nouvelle expression de pointeur, et ainsi de suite jusqu'à ce que la dernière expression d'indice a été ajoutée.L'opérateur d'indirection (***) est appliqué après la dernière expression indicée est évaluée, à moins que la valeur de pointeur finale adresse d'un type tableau (consultez les exemples ci-dessous).
Les expressions à indices multiples font référence à des éléments des « tableaux multidimensionnels. » Un tableau multidimensionnel est un tableau dont les éléments sont des tableaux.Par exemple, le premier élément du tableau à trois dimensions est un tableau à deux dimensions.
Exemples
Pour les exemples suivants, une matrice nommée prop est déclarée avec trois éléments, qui est un tableau 4 par de valeurs d' int .
int prop[3][4][6];
int i, *ip, (*ipp)[6];
Une référence au tableau d' prop ressemble à ceci :
i = prop[0][0][1];
Le code ci-dessus d'exemple comment faire référence au deuxième élément individuel d' int d' prop.Les tableaux sont stockées par la ligne, le dernier indice varie la plus rapide ; l'expression prop[0][0][2] fait référence (au troisième) élément suivant du tableau, et ainsi de suite.
i = prop[2][1][3];
cette instruction est une référence plus complexe à un élément individuel d' prop.l'expression est évaluée comme suit :
Le premier indice, 2, est multipliée par la taille d'un tableau de 4 par int et ajouté à la valeur de pointeur prop.Les points de résultat tableau à la troisième de 4 par d' prop.
Le deuxième indice, 1, est multipliée par la taille du tableau d' int de 6 éléments et ajouté à l'adresse représentée par prop[2].
Chaque élément du tableau de 6 éléments est une valeur d' int , donc l'indice final, 3, est multipliée par la taille d' int avant d'être ajouté à prop[2][1].Le pointeur résultant adresse le quatrième élément du tableau de 6 éléments.
L'opérateur d'indirection est appliqué à la valeur du pointeur.Le résultat est un élément d' int à cette adresse.
Ces deux cas show suivants d'exemples où l'opérateur d'indirection n'est pas appliqué.
ip = prop[2][1];
ipp = prop[2];
Dans le premier de ces instructions, l'expression prop[2][1] est une référence valide au tableau à trois dimensions prop; elle fait référence à un tableau de 6 éléments (déclarée ci-dessus).Étant donné que la valeur de pointeur adresse un tableau, l'opérateur d'indirection n'est pas appliqué.
De même, le résultat de l'expression prop[2] dans la deuxième instruction ipp = prop[2]; est une valeur de pointeur faire adresser un tableau à deux dimensions.