请帮助我理解以下代码以其方式工作的原因:
#include <stdio.h>
int main(){
int a = 10;
void *b = &a;
int *p = b;
printf("%u",*p++);
return 0;
}
我知道 printf 的输出将是 10,但我不太明白为什么 *p++ 是 10
这是我的步骤:
1) void *b = &a;
将a的地址存入指针b
2) int *p = b;
指针 p 现在指向与指针 b 相同的数据项
3) printf("%u",*p++);
是我感到困惑的地方...指针 p 的取消引用是 a,它是 10...不是 *p++
基本上等同于 10+1 即 11?
最佳答案
*p++
本质上是 *(p++)
。它在递增之前评估 p
的值,这是 a
的地址。然后取消引用它,它的计算结果为 10
。
关于c - 需要澄清指针递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19462193/