Tableaux unidimensionnels
Une expression suffixée suivie d'une expression entre crochets ([]) est une représentation indicée d'un élément d'un objet table.Une expression d'indice représente la valeur à l'adresse qui est des positions d'expression au delà d'expression suffixée une fois exprimée sous la forme
postfix-expression [ expression ]
Généralement, la valeur représentée par l' expression suffixée est une valeur de pointeur, telle qu'un identificateur du tableau, et l'expression est une valeur intégrale.Toutefois, tout ce qui est requis syntaxiquement est l'un des expressions soit de type pointeur et l'autre est de type intégral.Donc la valeur intégrale peut être en position d'expression suffixée et la valeur de pointeur peut être dans les parenthèses dans l'expression, ou « indice, » position.Par exemple, ce code est conforme :
// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
ptr = a;
sum = 4[ptr];
}
Les expressions en indice sont autorisées sont généralement utilisées pour faire référence aux éléments de tableau, mais vous pouvez appliquer un indice à un pointeur.Celui que la commande de valeurs, expression doivent se trouver entre crochets ([]).
L'expression d'indice est évaluée en ajoutant la valeur intégrale à la valeur de pointeur, puis en appliquant l'opérateur d'indirection (*) au résultat.(Voir l' indirection et opérateurs d'adresse pour une description de l'opérateur d'indirection.) En effet, pour un tableau unidimensionnel, les quatre expressions suivantes sont identiques, si la a est un pointeur et b est un entier :
a[b]
*(a + b)
*(b + a)
b[a]
En fonction de les règles de conversion pour l'opérateur d'addition (donné dans opérateurs additifs), la valeur intégrale est convertie en un offset d'adresse en le multipliant par la durée du type traité par le pointeur.
Par exemple, supposons que l'identificateur line fait référence à un tableau de valeurs d' int .La procédure suivante est utilisée pour évaluer l'expression d'indice line[ i ]:
la valeur entière i est multipliée par le nombre d'octets définis comme longueur d'un élément d' int .La valeur convertie d' i représente les positions de iint .
Cette valeur convertie est ajoutée à la valeur de pointeur d'origine (line) pour produire une adresse qui est des positions excentrées d' iint d' line.
l'opérateur d'indirection est appliqué à la nouvelle adresse.le résultat est la valeur de l'élément de tableau à cette position (intuitivement, line [ i ]).
L'expression d'indice line[0] représente la valeur du premier élément de la ligne, étant donné que le décalage de l'adresse représentée par line est 0.De même, une expression telle qu' line[5] fait référence aux positions de l'offset cinq d'élément de la ligne, ou au sixième élément du tableau.