Spe*_*987 7 c arrays printf pointers argv
int main(int argc, char **argv){
printf("argv: %s\n",argv); // does not work and prints random stuff
printf("*argv: %s\n",*argv); // works and prints ".a.out"
}
Run Code Online (Sandbox Code Playgroud)
我测试:
./a.out nop
Run Code Online (Sandbox Code Playgroud)
我的困惑是这样的:
第二行中的“argv”变量具有“./a.out”的第一个字符的地址。
第三行中的“*argv”变量是“./a.out”的第一个字符。
那么为什么printf("argv: %s\n",argv);只打印“./a.out”不起作用呢?
我知道这是错误的,但我不知道为什么。
argv是一个指向指针的指针。这意味着它“指向”地址,而不是直接指向字符。
因此,在 address 处argv,存储的是其他地址,而不是字符串。如果要访问第一个字符串,则必须使用它的地址,即*argv或argv[0]。
不知道我说的够不够清楚,欢迎追问。