将 2D char* 数组传递到函数时出错

Coo*_*une 1 c++ arrays casting char

我正在尝试将 char* 的二维数组传递给函数。我收到此错误:

"cannot convert 'char* (*)[2]' to 'char***' for argument '1' to 'int foo(char***)'"
Run Code Online (Sandbox Code Playgroud)

代码:

int foo(char*** hi)
{
    ...
}

int main()
{
    char* bar[10][10];
    return foo(bar);
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*itb 5

您的数组是10 char*数组的数组,每个数组都存储10 char*指针。

这意味着当将其传递给参数不是引用的函数时,它会被转换为pointer to an array of 10 char*. 因此,正确的函数参数类型是

int foo(char* (*hi)[10])
{
    ...
}

int main()
{
    char* bar[10][10];
    return foo(bar);
}
Run Code Online (Sandbox Code Playgroud)

进一步阅读Stackoverflow 上的Pet peeve条目。