如何在不分配动态内存的情况下使正确的字符串通过函数参数?

时间:2013-08-03 17:52:15

标签: c++ c

void funct(char *err_msg)
{
    err_msg = "some_err";
}

void main()
{
    char err_msg[1024] = { 0 };
    funct(err_msg);
    //funct(&err_msg); //can't do this :(
    //after this err_msg still empty
}

我也试过

void funct(char err_msg[])

1 个答案:

答案 0 :(得分:4)

如果要在err_msg内设置funct,则需要将指针传递给它{/ p>

void funct(char **err_msg)
{
    *err_msg = "some_err";
}

并将main更改为仅声明char*并致电funct

char* err_msg;
funct(&err_msg);

由于您已在调用函数中为字符串分配了存储空间,因此更容易保留当前签名并复制到err_msg而不是

void funct(char *err_msg)
{
    strcpy(err_msg, "some_err");
}