Condividi tramite


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

Espressioni di suffisso

Operatori di C++

Precedenza e associatività di operatore

Matrici (C++)

Concetti

Matrici unidimensionali

Matrici multidimensionali (C)