C++字符串:指针错误无效

bli*_*egz 0 c++

当我调用下面的函数时,我收到一个无效的指针错误.为什么会这样?

void Get(const char* value)
{
    string st("testing string");
    string val = st.substr(1, st.length()); 
    value = val.c_str();        
}

int main()
{
    const char *val = NULL;
    GetVal(val);
    cout<<val;
}
Run Code Online (Sandbox Code Playgroud)

目标是返回子字符串.

sha*_*oth 8

val变量inside Get()会在Get()返回时被破坏,因此指向valbody 的指针变为无效.此外value参数是原始指针的拷贝,所以原来val的指针main()功能保持不变,并仍持有空指针值.

将其更改为

string Get()
{
    string st("testing string");
    string val = st.substr(1, st.length()); 
    return val;
}
Run Code Online (Sandbox Code Playgroud)