以下案例让我更加困惑.据我所知,局部变量不会通过指针或引用返回.例如
char * foo()
{
return "Hello world";
}
int* fooo() {
static int i = 100;
return &i;
}
Run Code Online (Sandbox Code Playgroud)
两种情况都会发生什么?
字符串文字是静态存储的,当然static int i也是静态的.您可以从函数返回指向静态变量的指针,因为它们不是局部变量,并且当您按栈分配的变量退出函数时它们不会被销毁.另一方面,你的第一个例子应该返回一个const char *,
从C++标准部分lex.string:
字符串文字...具有类型"n const char数组"和静态存储持续时间(basic.stc),其中n是下面定义的字符串的大小,并使用给定的字符初始化...
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |