错误:无法将"常量字符**"转换为"常量字符 (*)[64]"
error: cannot convert 'const char**' to 'const char (*)[64]'
我尝试实现源代码如下:
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]在这种情况下是相似的,不是吗?
声明的数组
char foo[10][10];
转换为类型char( * )[10]
传递给函数时。并且没有从类型char ( * )[10]
到类型char *
的隐式转换。
所以函数声明应该是
bool getParam(char* cmd, char ( *prm_arr )[10], int num);
也就是说,在具有极少数例外的表达式中,数组被转换为指向数组元素类型的指针。
例如,如果您有一个 T 类型的数组
T a[N];
当数组转换为类型T *
时。
在数组foo
的声明中,其元素的类型为char[10]
。因此,数组将转换为指向元素类型的指针char ( * )[10]
注意函数主应该声明为类似
int main()
而不是
void main()
相关文章:
- 如何循环访问常量字符**?
- constexpr 函数获取常量字符*
- 如何计算常量字符**中的总字符数?
- QDial:如何将 int 值传递给需要常量字符*的 Qfile?
- 为什么 std::string_view 比常量字符*快?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 在编译时将常量字符* 转换为常量 char_type*
- 将字符串数组传递给接受常量字符**的函数
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 字符串强制转换为常量字符*
- 使用常量字符*时退出代码 139
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 无法<string>从"常量字符 []"转换为<类名>
- 初始化常量字符* 数组
- 常量字符*的性质是什么?
- C++ 获取向量中常量字符* [ ] 的长度
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- C++将常量字符* 指针数组传递给对象