*p++执行四次后为何p地址是自减?为何执行第一次*p++时b结果为9,而不是7?求解

代码如下图

运行结果如下图

 

1、为何自减?

其实并不是自减,而是在自增。因为你打印出来是负数,32位最大值为0xFFFFFFFF,在有符号时表示-1,所以实际作为地址来说,-431418084在-431418088的后面,你可以打印的时候用%u格式看看就知道了

2、为何d=*p++之后d为7?

因为执行顺序是 d = *p;p++,所以d=9,执行完d=*p后,p指针才向后移动

不知道我是否解释清楚,如果OK,请点击采纳

a的地址给p,第一次是第一个元素当然是9

b=*p++,意思把p指向数组第一个元素的值9赋值给b,然后指针移动

*p++执行四次后为何p地址是自减,数组地址是连续的,高位到地位没错啊 

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632