C語言下標運算子([])

2020-07-16 10:04:20
借助於下標運算子 [](subscript operator),可以獲取陣列中單獨的元素。下標運算子需要兩個運算元。在最簡單的情況下,一個運算元是一個陣列名稱,而另一個運算元是一個整數。

在下面的範例中,假設 myarray 是一個陣列的名稱,並且 i 是一個整數型別的變數。表示式 myarray[i] 指定該陣列內的第 i 號元素,陣列中第 1 個元素的編號為 0,換句話說,第 i 號元素是陣列中第 i+1 個元素。

運算子 [] 的左運算元不一定需要是陣列名稱。一個運算元必須是一個指標型別表示式(例如,陣列名稱就是這類表示式的一種),同時,另一個運算元必須是整數。表示式 x[y] 等效於(*((x)+(y)))。下面的範例使用下標運算子初始化一個動態生成的陣列。
#include <stdlib.h>
#define ARRAY_SIZE 100
/* ... */
double *pArray = NULL; int i = 0;
pArray = malloc( ARRAY_SIZE * sizeof(double) );  // 生成這個陣列
if ( pArray != NULL ) {
   for ( i = 0; i < ARRAY_SIZE; ++i )                 // 對陣列進行初始化
     pArray[i] = (double)rand()/RAND_MAX;
/* ... */
}
在該範例中,迴圈體內的表示式 pArray[i] 等效於 *(pArray+i)。i[pArray] 也是正確的,該表示方式也會生成相同的陣列元素。