共用方式為


一維陣列

後置運算式後面跟著以方括號 ([ ]) 括住的運算式,是陣列物件元素的註標表示法。 當註標運算式如下表示時,它代表超出 postfix-expression expression 個位置的位址值

postfix-expression [ expression ]

通常,postfix-expression 所代表的值是指標值,例如陣列識別碼,而 expression 則是整數值。 不過,在語法上只需要其中一個運算式為指標類型,而另一個則是整數類型。 整數值可以在 postfix-expression 位置,而指標值則可以在 expression 的括號中,或是在「註標」位置。 例如,以下這個程式碼是合法的:

// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
   ptr = a;
   sum = 4[ptr];
}

註標運算式通常用來參考陣列元素,但是您可以將註標套用到任何指標。 無論值的順序為何,expression 都必須以方括號 ([ ]) 括住。

評估註標運算式的方式是在指標值中加入整數值,然後將間接運算子 (*) 套用到結果。 (如需間接運算子的相關討論,請參閱間接和傳址運算子)。實際上,假設 a 是指標而 b 是整數,下列四個運算式對一維陣列而言是相等的:

a[b]
*(a + b)
*(b + a)
b[a]

加法運算子的轉換規則會在[加法運算符]中指定)。 若要將整數值轉換成位址位移,它會乘以指標尋址的類型長度。

例如,假設識別項 line 參考 int 值的陣列。 下列程序用於評估註標運算式 line[ i ]

  1. 整數值 i 乘以定義為 int 項目長度的位元組數目。 i 的轉換值代表 iint 位置。

  2. 轉換後的值會和原始指標值 (line) 相加,產生從 line 位移 iint 個位置的位址。

  3. 將間接運算子套用至新的位址。 結果是在該位置之陣列元素 (憑直覺是 line [ i ]) 的值。

註標運算式 line[0] 代表該行第一個元素的值,因為從 line 代表的位址位移是 0。 同樣地,運算式 (如 line[5]) 會參考從程式行位移五個位置的元素,或是陣列的第六個元素。

另請參閱

註標運算子: