程序是错的,因为数组越界了
循环体执行了两次,第一次把0赋给n[0],第,二次把1赋给n[1],退出后p指向n[2],而n[2]没有被初始化的,是一个未知值。当然,如果你把程序改成
main()
{
int b=3;
int n[2],i;
int *p=n;
for(i=0;i<2;i++)
{
*p=i;p++;
}
printf("%d\n",*p);
}
那么结果输出就是b的值,3.
追问请问,为什么int b=3,之后,就输出3了呢?指针P指向数组n啊,跟b有关系??
追答因为可以明显看出你这个程序数组越界了
内存中按从低到高地址存的数据是
n[0]=0
n[1]=1
b=3
你的p从n[0]指到n[1],结果又加了一,就指向b了,由此导致了未知的错误。如果b这个地方存的是一个其他值的话,那么出现的结果就会是其他值