2

我在尝试将字符数组的地址传递给函数时遇到了一点问题,这是我正在尝试做的一个简单示例:

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 *[]'

提前致谢。

问候,最大。

4

2 回答 2

7

您的参数&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);
}
于 2013-06-11T09:27:28.783 回答
1

*已编辑..犯了一个错误

您不是在声明一个 char* 数组,而是在声明一个 char 数组。在您的变量声明中添加星号并删除 & 应该使其工作:

void printit(char** arr){
  string tmp(arr[0]);
  cout<<tmp<<endl;
}


char* a[20] = {"hello"};
printit( a );
于 2013-06-11T09:24:41.013 回答