C语言在数组中设置值

示例

通常通过方括号访问数组值:

int val;
int array[10];

/* Setting the value of the fifth element to 5: */
array[4] = 5;

/* The above is equal to: */
*(array + 4) = 5;

/* Reading the value of the fifth element: */
val = array[4];

由于操作数对+运算符是可交换的(->交换定律),因此以下等效:

*(array + 4) = 5;
*(4 + array) = 5;

因此,下一条语句也等效:

array[4] = 5;
4[array] = 5; /* Weird but valid C ... */

以及这两个:

val = array[4];
val = 4[array]; /* Weird but valid C ... */

C不执行任何边界检查,访问已声明数组之外的内容是未定义的(访问已分配块之外的内存):

int val;
int array[10];

array[4] = 5;    /* ok */
val = array[4];  /* ok */
array[19] = 20;  /* undefined behavior */
val = array[15]; /* undefined behavior */