有这样两段程序,是分析结果:
#include
main()
{
int *p,n=7;
p=&n;
*(p++);
printf("*p=%d,p=%d,n=%d\n",*p,p,n);
}
这段输出的结果为:*p=-28,p=-40(忽略),n=7,为什么*p的结果为-28?
#include
main()
{
int *p,n=7;
p=&n;
(*p)++;
printf("*p=%d,p=%d,n=%d\n",*p,p,n);
}
这段程序的输出结果:*p=8,p=-42(忽略),n=8
我觉得,*p的值应与其指向的变量(常量)值相同,所以为什么第一例中*p=-28?
谢谢!
是不是因为第一例中p所指向的地址变了,超出定义相当于越界,所以出现个莫名其妙的数?
|