main(){ int a,*p; p=&a; a=100; *p++; printf("*p++=%d\n",*p);}为什么结果是-26,请详细解释
热心网友
p是a的地址,地址不是固定的,所以得到任何数都正常。
热心网友
p是a的地址,而*p++;这句的意思是先取*p的值,再将p的值加了1(既p=p+1)。当然你这里没有赋值所以结果就是p=p+1啦。到printf("*p++=%d\n",*p);这句的时候p值不再是a的地址了,而是a地址的下一个地址,故其值不确定。故可能是-26也可能是其他值
热心网友
*p++;这个语句的功能相当于:*(p++);也就是给指针P加1,而不是给(*p)加1所以,最后输出的是a的下一个地址的值,不一定是多少。我运行时输出的就是-22