相关疑难解决方法(0)

C语言中字符串文字的"生命周期"

以下函数返回的指针不会无法访问吗?

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的生命周期有点困惑.谁能给我一个很好的澄清?

c function local-variables lifetime string-literals

79
推荐指数
5
解决办法
2万
查看次数

从函数安全和可移植返回字符串文字地址?

我需要一个函数来返回一个只能以只读方式访问的字符串.字符串内容在编译时是已知的,因此无论如何我将使用字符串文字.

我可以返回类似的东西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)

在这种情况下,第二种替代方案是安全可移植的吗

c++ string

15
推荐指数
2
解决办法
1910
查看次数

从函数返回char*的内容

最近遇到了以下代码,它声明了一个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)

c pointers return-value string-literals

3
推荐指数
1
解决办法
176
查看次数