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

来源:7-5 左值和右值【只需记住这两点】

平_常_心

2025-02-17


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)
写回答

2回答

qq_申_0

2025-02-17

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

1
1
bennyhuo
说得对 ~
2025-02-17
共1条回复

bennyhuo

2025-02-17

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

0
1
北风一叶
++ 的优先级不是更高么,我的理解 是 先++ ,相当于pa=(pa+1) ,之后再是 *pa啊,是我哪里想错了么
2025-04-19
共1条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程