请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

*pa的值为什么从2变成了0?第2个*pa不是array的第一个值吗为什么是0而array[0]为3?


int array[4] = {0};
int *pa = array;
*pa = 2;
PRINT_INT(*pa);
PRINT_INT(array[0]);
PRINT_INT(array[1]);
PRINT_INT(array[2]);
PRINT_INT(array[3]);
*pa++ = 3;//这里有个技巧就是执行顺序的问题,可以按Ctrl+W
PRINT_INT(*pa);
PRINT_INT(array[0]);
PRINT_INT(array[1]);
PRINT_INT(array[2]);
PRINT_INT(array[3]);
PRINT_INT(*pa++);
PRINT_INT(array[0]);
PRINT_INT(array[1]);
PRINT_INT(array[2]);
PRINT_INT(array[3]);



```![图片描述](https://img1.sycdn.imooc.com/szimg/67b2f55c0828d86213330556.jpg)

正在回答 回答被采纳积分+3

2回答

qq_申_0 2025-02-17 17:01:18

*pa++,  ++优先级高于*, 故, 先使用后递增指针, 打印的第二个*pa相当于array[1]

1 回复 有任何疑惑可以回复我~
  • 说得对 ~
    回复 有任何疑惑可以回复我~ 2025-02-17 17:36:01
bennyhuo 2025-02-17 17:35:48

*pa++ = 3; // 这一句,相当于 *pa = 3, pa += 1;
PRINT_INT(*pa); // 这时 pa 已经指向 array[1] 了

0 回复 有任何疑惑可以回复我~
  • ++ 的优先级不是更高么,我的理解 是   先++ ,相当于pa=(pa+1)  ,之后再是 *pa啊,是我哪里想错了么
    回复 有任何疑惑可以回复我~ 2025-04-19 14:24:07
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号