这段代码是否正确?
char *argv[] = { "foo", "bar", NULL };
最佳答案
它在语法上是正确的,并且确实创建了一个以 NULL 结尾的字符串数组。
argv 作为 char*[]
(或等效地,char**
)传递给 main
,但它“更正确”为将字符串文字视为 const char*
而不是 char*
。因此,对于这个特定示例,您需要 const char *argv[] = {"foo", "bar", NULL };
也许您并不真的打算用“foo”初始化它,但实际上是用一个您希望通过 argv 修改的可修改字符串。在那种情况下 char*[]
是正确的。这就是 Charles 所说的代码是否“正确”取决于你用它做什么的意思。
关于在 C 中初始化以 NULL 结尾的字符串数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2750846/