在数组中设置值
访问数组值通常通过方括号来完成:
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 */