将字符串复制到 char**

copy string to char**

我不明白为什么会出现下面的代码:

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* 数组。

它想要 char* 类型的东西,而 &ret 是 char*** 类型。

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

使用

strcpy(*ret, temp);

而不是

strcpy(&ret, temp);

您需要取消引用 char ** 而不是引用它。

retchar**strcpy 期望 char*

然后您获取 &ret 的地址使其成为 char***

要么将 ret 作为 char* 传递给 receive_message,要么在传递给 strcpy (*ret, temp)

时取消引用它

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

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

不值得一个单独的函数;-)

将指针的地址传递给 receive_function 是很有用的,如果你打算让这个函数修改调用范围内的指针,如果你需要重新分配缓冲区,那么这是必需的,但是因为你没有传递大小,这样的重新分配是危险的。