处理数组时的语法?C
我试图理解下面显示的一段代码。我无法理解“数组+7”或“数组+3”的含义。它是否将数组中的第一个数字增加7/3处理数组时的语法?C,c,arrays,C,Arrays,我试图理解下面显示的一段代码。我无法理解“数组+7”或“数组+3”的含义。它是否将数组中的第一个数字增加7/3 int array[8] = {1,2,4,8,16,32,64,128}; int *ptr_array[4]; int *dyn_array = malloc(sizof(int)*8); ptr_array[0] = array; ptr_array[1] = array +7; ptr_array[2] = array +3; ptr_array[3] = dyn_arra
int array[8] = {1,2,4,8,16,32,64,128};
int *ptr_array[4];
int *dyn_array = malloc(sizof(int)*8);
ptr_array[0] = array;
ptr_array[1] = array +7;
ptr_array[2] = array +3;
ptr_array[3] = dyn_array;
array+7
是指向数组八个元素的指针,它等于&array[7]
,因为x[y]
被定义为*(x+y)
数组变量的名称在用作表达式时,可以衰减为指向数组第一个元素的指针。所以当你申报时
T a[10];
然后a
可以衰减到a[0]
的地址。实际上,无论何时使用订阅都会用到它:a[i]
与*(a+i)
相同,后者本身使用指针算术规则
因此,
a+7
是数组第八个元素的地址(如果数组只有七个元素,则可能是数组末尾的一个元素)。array+7
表示数组第八个位置的地址。在这里,数组保存基址。因此,您可以通过*(array+7)
或array[7]
访问该数组的第8个元素