函数返回指针

Sri*_*han 1 c++ pointers

以下案例让我更加困惑.据我所知,局部变量不会通过指针或引用返回.例如

char * foo()
{
  return "Hello world";
}

int*  fooo() {
    static int i = 100;
    return &i;
}
Run Code Online (Sandbox Code Playgroud)

两种情况都会发生什么?

per*_*eal 5

字符串文字是静态存储的,当然static int i也是静态的.您可以从函数返回指向静态变量的指针,因为它们不是局部变量,并且当您按栈分配的变量退出函数时它们不会被销毁.另一方面,你的第一个例子应该返回一个const char *,

从C++标准部分lex.string:

字符串文字...具有类型"n const char数组"和静态存储持续时间(basic.stc),其中n是下面定义的字符串的大小,并使用给定的字符初始化...