这段代码是否正确?
char *argv[] = { "foo", "bar", NULL };
Run Code Online (Sandbox Code Playgroud)
它在语法上是正确的,它确实创建了一个以NULL结尾的字符串数组.
argv被传递给mainas char*[](或等价char**),但将字符串文字视为a const char*而不是a 更"正确" char*.所以你需要这个特殊的例子const char *argv[] = {"foo", "bar", NULL };
也许你真的不会用"foo"初始化它,但实际上你需要通过argv修改一个可修改的字符串.在那种情况下char*[]是对的.这就是Charles可能的意思,即代码是否"正确"取决于你用它做什么.