Dolní operátor:]
postfix-expression [ expression ]
Poznámky
Příponové výrazu (který může být také primární výraz) následovaný dolní operátor [], určuje indexování pole.
Informace o spravovaných matice, viz matice (Visual C++).
Obvykle hodnoty představované Příponové výraz je hodnota ukazatele, jako je například identifikátor pole a výraz je integrální hodnota (včetně Výčtové typy).Však stačí syntakticky je jeden výrazy typu ukazatele a ostatní být nedílnou typu.Proto může být integrální hodnota v Příponové výraz pozici a ukazatel hodnota může být v závorkách v výraz nebo dolní pozice.Zvažte následující fragment kódu:
int nArray[5] = { 0, 1, 2, 3, 4 };
cout << nArray[2] << endl; // prints "2"
cout << 2[nArray] << endl; // prints "2"
V předchozím příkladu výraz nArray[2] je shodné s 2[nArray].Důvodem je, že v důsledku výraz dolního indexu e1e2**[]** je dán vzorcem:
*( (e2) + (e1) )
Adresa nevyplacené výrazu není e2 bajtů z adresy e1.Spíše velikost přinést další objekt v poli Adresa e2.Příklad:
double aDbl[2];
Adresy aDb[0] a aDb[1] 8 bajtů jsou od sebe – velikost objektu typu dvojité.Měřítko objektu typu jazyka C++ provádí automaticky a je definována v Operátory doplňkové látky kde je popsána sčítání a odčítání operandy typu ukazatel.
Výraz dolního indexu můžete mít také více dolních takto:
expression1 expression2 expression3...
Dolní výrazy spojení zleva doprava.První výraz dolního indexu Výraz1Výraz2**[], je nejprve vyhodnocen.Adresa, která je výsledkem přidání Výraz1 a Výraz2 tvoří ukazatel výrazu; potom expression3 doplňuje se tento ukazatel výraz tvoří nový výraz ukazatel atd., dokud poslední výraz dolního indexu byl přidán.Operátor nepřímé odkazování (***) je použita po nich poslední výrazu je vyhodnocena, pokud je hodnota ukazatele konečné adresy typu pole.
Výrazy s více dolních naleznete prvky vícedimenzionální pole.Multidimenzionální pole je matice, jejíž prvky jsou matice.Například je první prvek trojrozměrné pole se dvěma dimenzemi.Následující příklad prohlašuje a inicializuje jednoduché dvourozměrné pole znaků:
// 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;
}
Viz také
Referenční dokumentace
Přednost a asociativita operátorů