处理数组时的语法? C

时间:2014-08-23 11:51:45

标签: c arrays

我试图理解下面显示的一段代码。我在理解什么是" 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;

3 个答案:

答案 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个元素。