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