我尝试将字符数组的地址传递给函数时遇到了一些问题,这是我想要做的一个简单示例:
char a[20] = {"hello"};
printit( &a );
你可以告诉我printit功能的声明(也许是为什么),我期待的是:
void printit( char ** value );
or void printit( char * value[] );
工作,但事实并非如此。
*错误讯息:
void printit( char ** value ); => cannot convert parameter 1 from 'char (*)[20]' to 'char **'
void printit( char * value[] ); => cannot convert parameter 1 from 'char (*)[20]' to 'char *[]'
提前感谢。
此致 最大
答案 0 :(得分:6)
您的参数&a
是指向20个字符数组的指针,因此:
void printit(char (*value)[20]); // value is a pointer to an array of 20 chars
然而,更常见的是(尤其是字符串)将调用更改为
printit(a); // a will be passed as pointer to first elelemt, i.e. 'a' can be used as pointer to char
并将printit定义为
void printit(char *value)
{
printf("The string is: %s", value);
}
答案 1 :(得分:1)
*已编辑..犯了错误
您没有声明一个char *数组,而是声明了一个char数组。在您的变量声明中添加星号并删除&应该让它发挥作用:
void printit(char** arr){
string tmp(arr[0]);
cout<<tmp<<endl;
}
char* a[20] = {"hello"};
printit( a );