一維陣列
後置運算式後面方括號中的運算式 ([]) 是陣列物件中項目的下標的表示法。註標運算式代表的值,網址是運算式 將超過 後置運算式時表示為
postfix-expression [ expression ]
通常,所代表的值後置運算式 是一個指標值,例如陣列識別項,以及 運算式是一個整數值。不過,所有這正是必要語法是該運算式的其中一個是指標型別及另是整數類資料型別。整數的值可以用入後置運算式 的位置,而指標值可能是在中括弧括住 運算式,或 「 下標 」 的位置。比方說,這段程式碼是合法的:
// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
ptr = a;
sum = 4[ptr];
}
註標運算式通常用來參考陣列元素,但您可以套用任何指標的註標。任何數值的順序, 運算式 必須以括弧括起來 ([])。
註標運算式會評估的整數值加入指標值,然後套用間接取值運算子 (*) 的結果。(請參閱間接取值和傳址運算子的間接取值運算子探討。) 實際上,一維陣列,如下列四個運算式相等,但前提a是一個指標和b是一個整數:
a[b]
*(a + b)
*(b + a)
b[a]
加法運算子的轉換規則 (指定在加法運算子),整數的值時,會轉換成位址的位移上,藉由乘以所修正的指標型別的長度。
例如,假設識別項line的陣列是指int的值。下列程序用來評估註標運算式line[ i ]:
整數值i的定義為長度的位元組數乘以int項目。已轉換的值i代表iint的位置。
這個轉換的值加入至原始的指標值 (line) 以產生一個位址範圍開始偏移的iint將從line。
間接取值運算子套用到新的地址。結果就是那個位置的陣列元素的值 (也就是說, line [ i ])。
註標運算式line[0]表示線條的第一個元素的值後的地址所表示的位移line為 0。同樣地,一種運算式line[5]是指項目位移五個位置,從列或陣列的第六個項目。