c - *p++ 和++*p 之间的区别

标签 c pointers printf

int a = 5;
int *p = &a;
printf("%d\n\n", ++*p);
printf("%d\n", *p++);

++*p 相当于 ++(*p)。但是*p++增加了指针,而不是p指向的值。 但我无法理解为什么我的代码中的 printf 语句显示相同的值“6”。 这背后有什么具体的逻辑吗?

最佳答案

当然。当您第二次打印 *p 时,您已经在第一次调用 printf() 的行上增加了它(指针指向的值)。

int a = 5;                
int *p = &a;              // p = &a, *p = 5
printf("%d\n\n", ++*p);   // p = &a, *p = 6
printf("%d\n", *p++);     // p = &a + 1, *(p - 1) = a = 6 (still!)

关于c - *p++ 和++*p 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17487644/

相关文章:

c - 在 C 中通过梯形规则积分

c - 如何使用指针和 malloc 将字符存储到数组中?

c - 如何将函数和变量参数列表传递给 C 中的另一个函数?

c - 警告 : format ‘%s’ expects type ‘char *’ , 但参数 2 的类型为 ‘int’

c++ - 有没有更优雅的方式在 C++ 中结合 sprintf 和 std::string?

在 C 编程中转换数组字符

c - 在c中访问进程独立寄存器的值

c - Linux - 从 malloc 复制虚拟内存地址或移动虚拟内存地址

c - C中的双指针疑惑

c - pow(1,0) 返回 0?