我发现了两种将命令行参数传递到字符数组的方法:
int main (int argc, char **argv)
{
const char *s1 = argv[0];
char s2[256];
strcpy(s2, argv[0]);
printf("s1: %s\ns2: %s\n\n", s1, s2);
}
在 AIX 系统上使用 IBM xlc 编译器编译
[我的提示]> ./a.out
s1:./a.out
s2: ./a.out
哪个实现(s1 或 s2)是正确的?s1 很好,因为 argv[0] 可以是任意长度。s2 要求 argv[0] 的长度 < 256 个字符。
我不明白 s1 如何/为什么应该工作。我认为s1 的右侧应该在编译时需要,但我认为它是在运行时生成的。