当我调用下面的函数时,我收到一个无效的指针错误.为什么会这样?
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)
目标是返回子字符串.
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)