将字符串复制到char **

时间:2015-11-29 20:48:21

标签: c pointers strcpy

我不明白为什么以下代码:

char** receive_message(char** ret)
{
    char* temp = "text";

    strcpy(&ret, temp);
    return ret;
}

给出了这个错误:

warning: passing argument 1 of ‘strcpy’ from incompatible pointer type [enabled by default]
     strcpy(&ret, temp);

我正在尝试将函数内部生成的消息复制到在函数外部分配的char *数组。

4 个答案:

答案 0 :(得分:2)

使用

strcpy(*ret, temp);

而不是

strcpy(&ret, temp);

你需要尊重char **而不是参考它。

答案 1 :(得分:1)

它需要char *类型的东西,而& ret的类型为char ***。

你可以传递* ret,类型为char *。

答案 2 :(得分:0)

retchar**strcpy需要char*

然后,您将&ret的地址设为char***

ret作为char*传递到receive_message或将其传递给strcpy (*ret, temp)

取消引用

答案 3 :(得分:0)

您正在将strcpy指针的地址传递给指向char的指针......这两个间接级别太多了。您不需要所有这些间接,您可以这样简化receive_message

char *receive_message(char *ret) {
    return strcpy(ret, "text");
}

不值得一个单独的功能; - )

将指针的地址传递给receive_function是有用的,你打算让这个函数修改调用范围内的指针,如果你需要重新分配缓冲区就需要,但是你做的就是没有超过规模,这种重新分配将是危险的。