我试图理解下面显示的一段代码。我在理解什么是" array + 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_array;
答案 0 :(得分:2)
array + 7
是指向数组的八个元素的指针,它等于&array[7]
,因为x[y]
被定义为*(x + y)
。
答案 1 :(得分:2)
当用作表达式时,数组变量的名称可以衰减为指向数组的第一个元素的指针。所以当你宣布
时T a[10];
然后a
可以衰减到a[0]
的地址。实际上,只要您使用下标,就会使用它:a[i]
与*(a + i)
相同,a + 7
本身使用指针算法规则。
所以{{1}}是数组的第八个元素的地址(如果数组只有七个元素,它可能是数组的一端)。
答案 2 :(得分:0)
array + 7
表示数组第8个位置的地址。在这里数组保持基地址。因此,您可以通过*(array+7)
或array[7]
访问该数组的第8个元素。