C语言数组指针的偏移,完成循环需要回到首地址
#include<stdio.h>
int main()
{
int arr[]={1,2,3};
int *p;
p=arr;
int i;
for(i=0;i<3;i++){
printf ("%d\n",*p);
p++;//每次完成输出进行自加偏移
}
p=arr;//循环结束,回到首地址
for(i=0;i<3;i++){
printf ("%d\n",*p);
p++;//每次完成输出进行自加偏移
}
return 0;
}
如果第一次for循环完成没有回到首地址,则下个循环继续在该基础上偏移,就会越界,结果如下
1
2
3
0
6422040
0