我是c编程的新生,我做了一个小程序,在动作中看到指针中++的所有组合。因此,我codded:(ⅰ通过的virtualbox在Ubuntu运行它)指针的地址逐渐增加
#include <stdio.h>
main()
{
int num = 1;
int *p = #
printf("\nnum position: %p num value: %d\n", p, num);
*p += 1;
printf("\n---- *p += 1; -----\n");
printf("num position: %p num value: %d\n", p, num);
*p++;
printf("\n---- *p++; -----\n");
printf("num position: %p num value: %d\n", p, num);
(*p)++;
printf("\n---- (*p)++; -----\n");
printf("num position: %p num value: %d\n", p, num);
++(*p);
printf("\n---- ++(*p); -----\n");
printf("num position: %p num value: %d\n", p, num);
++*p;
printf("\n---- ++*p; -----\n");
printf("num position: %p num value: %d\n\n", p, num);
}
输出:
num position: 0xbfce07b8 num value: 1
---- *p += 1; -----
num position: 0xbfce07b8 num value: 2
---- *p++; -----
num position: 0xbfce07bc num value: 2
---- (*p)++; -----
num position: 0xbfce07bd num value: 2
---- ++(*p); -----
num position: 0xbfce08bd num value: 2
---- ++*p; -----
num position: 0xbfce08bd num value: 2
我明白++的不同用法。但是我的问题是关于地址(我只是写了4个位数)
起初,地址是:07b8
的第一增量后的地址为07bc第二增量后(增加4(HEX))
地址为07bd(增加1(十六进制))
第3次增量后地址为08bd(增加100(十六进制))
为什么地址增量不稳定?
不要忘记添加返回0;在主要结束时。总是使用return 0,并且尝试使用int main()而不是main(),因为c99严格检查返回类型 – niko