繁体   English   中英

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

[英]Error passing 2D char* array into a function

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

"cannot convert 'char* (*)[2]' to 'char***' for argument '1' to 'int foo(char***)'"

您的数组是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);
}

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

如果数组的大小不会改变,最好在函数中使用对数组的引用。 它更安全、更清洁。 例如:

int foo(char* (&hi)[10][10] )
{
 int return_val = 0;
 //do something
 //hi[5][5] = 0;
 return return_val;
}

int main()
{
    char* bar[10][10];
    return foo(bar);
}

现在是引入引用概念的糟糕时机吗?

顺便说一句,我会说在调用方需要一个额外的“&”。 话虽如此,这是一场危险的游戏。

你为什么要分配这个? 为什么它在堆栈上? 为什么要在接收函数中将其键入 char*** ?

雅各布

尝试

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

int main()
{
    char* bar[10][10];
    return foo(bar);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM