借助于下标运算符 [](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] 也是正确的,该表示方式也会生成相同的数组元素。