註標運算子:]
postfix-expression [ expression ]
備註
(這也是主要的運算式) 後面的註標運算子後, 置運算式 [],指定陣列索引。
Managed 陣列的相關資訊,請參閱陣列 (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) )
運算式所產生的地址不是 e2 個位元組的位址 e1。 地址以產生陣列中的下一個物件的縮放而 e2。 例如:
double aDbl[2];
位址aDb[0]和aDb[1]相距 8 個位元組,型別的物件的大小雙精度浮點。 縮放物件類型由 C++ 語言的自動完成,它被定義在加法運算子加法和減法的指標型別的運算元會加以討論。
註標運算式也可以多個的註標,如下所示:
expression1 expression2 expression3...
註標運算式關聯從左到右。 最左邊的註標運算式中, expression1表示,會先評估。 新增位址 expression1 和表示形成指標運算式。 然後 expression3 會新增到最後一個註標運算式加入之前,以此類推形成新的指標運算式中,這個指標運算式。 間接取值運算子 (*) 之後,會套用在評估的最後一次下標的運算式時,除非最後的指標值的位址陣列型別。
有多個註標運算式參考的多維陣列的項目。 多維陣列會是其元素也是陣列的陣列。 例如,一個三維陣列的第一個元素是具有兩個維度的陣列。 下列範例會宣告並初始化一個簡單的二維陣列的字元:
// 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;
}