您可以使用这些示例来解释:
#include <stdio.h>
int main(void)
{
int g = 476789;
char *ptr = (char *)&g;
int r = (*ptr)++;
printf("%d\n", r);
return 0;
}
#include <stdio.h>
int main(void)
{
int g = 476789;
char *ptr = (char *)&g;
int r = *ptr + 1;
printf("%d\n", r);
return 0;
}
为什么变量的值在第一种情况下改变g
,而在第二种情况下不变?
令存储变量的单元格中的低字节g
为 = 107。另外,在例子中,首先解引用ptr
,即得到值 107 并加 +1,结果变量r
等于 = 108,结果是变量的值g
没有改变,因为低字节没有改变。但在第一种情况下,我有点困惑,也就是说,首先指针被取消引用,ptr
即107,然后这个值被分配给一个变量r
,然后指针本身的值,即地址增加 1一切都对还是有问题?
该值
ptr
不会改变。在这里,看一下这段代码及其运行结果:结果:
我建议您重新阅读前缀和后缀增量是什么。