这是正常的代码段
int a[10]={1,3,5,7,9,11,13,15,17,19};
int sum1=0,sum2=0;
int *p=&a[0];
while(p<&a[10])
{
sum1+=*p++;
}
printf("%d\n",sum1);
输出为100
这是指针超限的代码段
int a[10]={1,3,5,7,9,11,13,15,17,19};
int sum1=0,sum2=0;
int *p=&a[0];
while(p<&a[10])
{
sum1+=*++p;
}
printf("%d\n",sum1);
输出为136
疑问:这最后的指针指向的是什么?
其实就是从a[0]加到a[9]和从a[1]加到a[10]的区别
a[10]没定义,但是c语言是基于指针的,它直接寻址,不检测指针到底是干啥的
所以它大概率会指向sum1,因为sum1是紧跟着数组定义的,地址一般也会连续
但也不一定。如果不连续,那就是个内存里不知道什么程序遗留下来的数据,是个随机数。