当我进入使用 c main 方法中的 argv 参数的部分时,我发现了一些不寻常的东西,我不确定有人会遇到这个并考虑一下:
#include <stdio.h>
int main(int argc, char *argv[]){
char *s = "hello,world";
printf("%p\n", s);
s++;
printf("%p\n", s);
printf("%p\n", argv);
argv++;
printf("%p\n", argv);
}
一个非常简单的 c 代码片段,它将从 main 打印有关 argv 参数的信息;这是我机器上的结果:
0x55c2582f2764
0x55c2582f2765
0x7ffddf3cff48
0x7ffddf3cff50
根据我从这本书中学到的知识,我希望它能输出如下内容:
0x55c2582f2764
0x55c2582f2765
0x7ffddf3cff48
0x7ffddf3cff59
但是输出不同,我能想到的都是for s,它是指向一个字符,一个字符占用1个字节,所以是意料之中的,但是对于后者,指针值加1,为什么内存地址修改了 8 个字节??如此不寻常的情况,有人可以分享一些想法吗?很多谢谢!