将指向char数组的指针传递给函数

Max*_*Max 1 c++

我试图将字符数组的地址传递给函数时有一点问题,这是我想要做的一个简单示例:

char a[20] = {"hello"};
printit( &a );
Run Code Online (Sandbox Code Playgroud)

你能告诉我printit功能的声明(也许是为什么),我期待的是:

void printit( char ** value );
or void printit( char * value[] );
Run Code Online (Sandbox Code Playgroud)

工作,但事实并非如此.

*错误消息:

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 *[]'
Run Code Online (Sandbox Code Playgroud)

提前致谢.

此致,最多

Nic*_*laz 6

您的参数&a是指向20个字符数组的指针,因此:

void printit(char (*value)[20]);  // value is a pointer to an array of 20 chars
Run Code Online (Sandbox Code Playgroud)

.

但是,更常见的是(特别是使用字符串)将调用更改为

printit(a);   // a will be passed as pointer to first elelemt, i.e. 'a' can be used as pointer to char
Run Code Online (Sandbox Code Playgroud)

并将printit定义为

void printit(char *value)
{
     printf("The string is: %s", value);
}
Run Code Online (Sandbox Code Playgroud)