添字演算子:
postfix-expression [ expression ]
解説
(または式を指定することもできます) 添字演算子が **[入力]**次に後置配列の添字の式を指定します。
マネージ配列については配列 (Visual C++) を参照してください。
通常 後置式 で表される値はポインター値配列識別子のようなされ 式 が整数値です (列挙型を含む)。ただし構文上必要なのはポインター型の式が文字で他方が整数型です。したがって整数値は 後置式の 位置にありポインター値は 式 または添字の角かっこの場所に配置できます。次のコードがあるとします。
int nArray[5] = { 0, 1, 2, 3, 4 };
cout << nArray[2] << endl; // prints "2"
cout << 2[nArray] << endl; // prints "2"
前の例の式は nArray[2]2[nArray] と同じです。添字と式 **[***e1e2 * 入力] の結果は次に提供することです :
((*e2**)***+ ***(**e1))
式が指定されたアドレスは e1 アドレスから e2 バイトありません。なくアドレスはe2 で次のオブジェクトが得られるようにスケーリングされます。次に例を示します。
double aDbl[2];
aDb[0] と aDb[1] のアドレスはから 8 バイト (つまり型 倍精度浮動小数点型 のオブジェクトのサイズです。オブジェクトの種類に従ってこのスケーリングはC++ 言語では自動的に行われポインター型のオペランドの加算と減算について説明する 加法演算子 で定義されます。
添字の式は次のように複数の添字が存在している可能性があります :
*expression1 ***[**expression2 入力] **[**expression3 入力] …
添字の式は左から右に関連付けます。左端の添字式expression1**[**expression2 入力] は最初に評価されます。expression1 と expression2 の 追加によって生成されたアドレスはポインター式を形成します ; expression3 は このポインター式の最後の添字式が追加されるまでは新しいポインター式を形成するためにが追加されます。最終的なポインターの値が配列型に対応 subscripted最後の式を評価した後 * 間接演算子 () が適用されます。
複数の添字を含む式は多次元配列の要素を示しています。多次元配列とはその要素も配列である配列です。たとえば次元配列の最初の要素は 2 次元の配列です。次の例では文字の簡単な次元配列を宣言して初期化 :
// 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;
}