Operatore di indice:
postfix-expression [ expression ]
Note
Un'espressione di suffisso (che può essere un'espressione primaria) è seguito dall'operatore di indice, [], specifica l'indicizzazione della matrice.
Per informazioni sulle matrici gestite, vedere matrice (Visual C++).
In genere, il valore rappresentato da suffisso-espressione è un valore del puntatore, quali un identificatore di matrice e espressione è un valore integrale (tipi enumerati inclusi).Tuttavia, tutto ciò che è sintatticamente necessario è quella dell'espressione è di tipo puntatore e l'altro è di tipo integrale.Quindi il valore integrale potrebbe essere in suffisso-espressione la posizione e il valore del puntatore potrebbero essere in parentesi in espressione o posizione di indice.Si consideri il frammento di codice riportato di seguito.
int nArray[5] = { 0, 1, 2, 3, 4 };
cout << nArray[2] << endl; // prints "2"
cout << 2[nArray] << endl; // prints "2"
Nell'esempio precedente, l'espressione nArray[2] equivale a 2[nArray].Il motivo è che il risultato di un'espressione di indice e1**[** e2 ] viene fornito da:
* )/1000e2**)** + **(**e1))
L'indirizzo prodotto dall'espressione non è e2 byte dall'indirizzo e1.Piuttosto, l'indirizzo viene ridimensionato in modo da rendere l'oggetto successivo della matrice e2.Di seguito è riportato un esempio:
double aDbl[2];
gli indirizzi di aDb[0] e aDb[1] sono 8 byte a parte alla dimensione di un oggetto di tipo doppio.Questa rappresentazione in scala in base al tipo di oggetto viene eseguita automaticamente dal linguaggio C++ e definita in operatori additivi dove l'aggiunta e la sottrazione di operandi di tipo puntatore viene discussa.
Un'espressione di indice inoltre possibile avere più indici, come segue:
expression1 [expression2] [expression3]…
Le espressioni di indice associano da sinistra a destra.L'espressione di indice più a sinistra, expression1**[expression2], viene valutato per primo.L'indirizzo risultante aggiungendo expression1 e expression2 forma un'espressione puntatore, quindi expression3 aggiunto a questa espressione del puntatore per formare una nuova espressione del puntatore, e così via fino a avere aggiunto l'ultima espressione di indice.l'operatore di riferimento indiretto (***viene applicato dopo l'espressione formattata l'ultima viene valutata, a meno che il valore del puntatore finale indirizzi un tipo di matrice.
Le espressioni con più indici fanno riferimento agli elementi delle matrici multidimensionali.Una matrice multidimensionale è una matrice i cui elementi sono matrici.Ad esempio, il primo elemento di una matrice tridimensionale è una matrice con due dimensioni.Nell'esempio dichiara e inizializza una matrice bidimensionale semplice di caratteri:
// 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;
}
Vedere anche
Riferimenti
Precedenza e associatività di operatore