[英]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.