arr ++没有用,但我想知道为什么?
arr&arr[0] 因此,arr存储基址,始终指向数组的起始位置,不能更改.这就是为什么arr++无效并且不起作用的原因.
解:
您可以arr在*(引用运算符)运算符的帮助下使用来打印数组元素
for(i=0;i<5;i++)
{
printf("%d\n",*(arr+i));
//pointer arithmetic *(arr+i)=*(&arr[0]+i*sizeof(data_type_of_arr))
}
Run Code Online (Sandbox Code Playgroud)
这里,指针算术有助于理解
或者,为了打印数据而不是这样使用索引i:
for(i=0;i<5;i++)
{
printf("%d\n",arr[i]);
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是考虑一个新的指针&arr[0]并增加.
int *p=&arr[0];
for(i=0;i<5;i++)
{
printf("%d\n",*p);
p++;
//pointer arithmetic *(p)=*((&p)+1*sizeof(data_type_of_arr))
//NOTE: address of p updates for every iteration
}
Run Code Online (Sandbox Code Playgroud)
有关指针算术的进一步阅读:此处