error: cannot convert 'const char**' to 'const char (*)[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] 在这种情况下很相似,不是吗?
数组声明为like
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]
注意main函数要这样声明
int main()
而不是
void main()
我尝试实现源代码如下:
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] 在这种情况下很相似,不是吗?
数组声明为like
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]
注意main函数要这样声明
int main()
而不是
void main()