我正在阅读C++ Primer,在第6.2节中它说:
"参数初始化的工作方式与变量初始化相同."
然而当我这样做时:
void foo(char* args[]) {return;}
int main() {
char* args[]={"asd","dsa"}; // ok.
foo({"asd","dsa"}); // error.
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?
正如 @TC 在评论中指出的,函数参数中的 args 被转换为 char** 因为函数不能将数组作为参数。既然你做不到
char **asd={"asd","dsa"};
Run Code Online (Sandbox Code Playgroud)
该代码是非法的。我的困惑来自于这样一个事实
char* args[]={"asd","dsa"};
char **asd=args;
Run Code Online (Sandbox Code Playgroud)
是合法的。