Opérateur souscrit :
postfix-expression [ expression ]
Notes
Une expression suffixée (qui peut également être une expression primaire) suivi de l'opérateur souscrit, [], spécifie l'indexation de tableau.
Pour plus d'informations sur les tableaux managés, consultez l' tableau (Visual C++).
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 (types énumérés).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 en position d'expression ou d'indice.Prenons le fragment de code suivant :
int nArray[5] = { 0, 1, 2, 3, 4 };
cout << nArray[2] << endl; // prints "2"
cout << 2[nArray] << endl; // prints "2"
Dans l'exemple précédent, l'expression nArray[2] identique à 2[nArray].La raison en est que le résultat d'une expression d'indice e1**[***e2 *] est fourni par :
* ((e2)*+ ***(**e1))
L'adresse transmise par l'expression n'est pas les octets e2 de l'adresse e1.En revanche, l'adresse est mise à l'échelle pour retourner l'objet suivant du tableau e2.Par exemple :
double aDbl[2];
Les adresses d' aDb[0] et d' aDb[1] sont de 8 octets à part - taille d'un objet de type double.Cette mise à l'échelle en fonction de le type d'objet est effectuée automatiquement par le langage C++ et est définie dans opérateurs additifs où l'ajout et la soustraction des opérandes de type pointeur est question.
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.
Les expressions à indices multiples font référence aux é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.L'exemple suivant déclare et initialise un tableau à deux dimensions simple de caractères :
// expre_Subscript_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
#define MAX_ROWS 2
#define MAX_COLS 2
int main() {
char c[ MAX_ROWS ][ MAX_COLS ] = { { 'a', 'b' }, { 'c', 'd' } };
for ( int i = 0; i < MAX_ROWS; i++ )
for ( int j = 0; j < MAX_COLS; j++ )
cout << c[ i ][ j ] << endl;
}
Voir aussi
Référence
Priorité des opérateurs et d'associativité