1
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[])
4

1 回答 1

4

如果你想在err_msg里面设置funct,你需要传递一个指向它的指针

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

并更改为main仅声明 achar*并调用funct

char* err_msg;
funct(&err_msg);

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

void funct(char *err_msg)
{
    strcpy(err_msg, "some_err");
}
于 2013-08-03T17:55:29.920 回答