以下函数返回的指针不会无法访问吗?
char *foo( int rc )
{
switch (rc)
{
case 1: return("one");
case 2: return("two");
default: return("whatever");
}
}
Run Code Online (Sandbox Code Playgroud)
所以C/C++中局部变量的生命周期实际上只在函数内,对吧?这意味着,在char* foo(int)终止后,它返回的指针不再意味着什么?
我对本地var的生命周期有点困惑.谁能给我一个很好的澄清?
我需要一个函数来返回一个只能以只读方式访问的字符串.字符串内容在编译时是已知的,因此无论如何我将使用字符串文字.
我可以返回类似的东西std::string:
std::string myFunction()
{
return "string";
}
Run Code Online (Sandbox Code Playgroud)
或返回const char*:
const char* myFunction()
{
return "string";
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,第二种替代方案是安全可移植的吗
最近遇到了以下代码,它声明了一个char*p,赋值如p ="GOOD"并返回return p.函数调用完成后返回值是否有效?
const char * get_state(int state)
{
char *p;
if (state) {
p = "GOOD";
}
else
{
p = "BAD";
}
return p;
}
Run Code Online (Sandbox Code Playgroud)