【发布时间】:2020-01-23 08:05:05
【问题描述】:
我尝试实现源代码如下:
bool getParam(char* cmd, char** prm_arr, int num)
{
}
void main()
{
char strC[] = "btOK,btCancel";
char foo[10][10];
bool res = getParam(strC,foo,2);
}
显示错误:
error: cannot convert ‘char (*)[10]’ to ‘char**’ for argument ‘2’ to ‘bool getParam(char*, char**, int)’
bool res = getParam(strC,foo,2);
我认为 char** 和 char (*)[10] 在这种情况下是相似的,不是吗?
【问题讨论】:
-
数组不是指针,指针也不是数组。特别是,指向数组的指针不是指向指针的指针。
-
如果你能做到这一点,函数可以改变
*prm_arr指向其他地方。但改变的是一个更大数组的 10 个元素;能够“让它指向其他地方”是没有意义的。 -
char foo[10][10]将分配 100 个字符,排列为 10 个块,每个块 10 个字符。它不会创建指向每个块的指针数组。因此,您无法获得指向指针数组 (char **) 的指针。解决方案取决于您想要实现的目标。是否需要将可变大小的二维数组传递给getParam()?
标签: c++ arrays pointers arguments implicit-conversion