【发布时间】:2013-04-24 03:25:51
【问题描述】:
下面的案例让我更加困惑。据我所知,局部变量不会通过指针或引用返回。例如
char * foo()
{
return "Hello world";
}
int* fooo() {
static int i = 100;
return &i;
}
这两种情况会发生什么?
【问题讨论】:
-
第一个在现代 C++ 中不应该编译干净。
-
也就是说,这样返回是标准方法?
-
我不会说它是“标准的”。这是合法的,但不是惯例。您能否向我们提供更多信息,说明您要完成的工作以及您认为需要编写此代码的原因?
-
非常感谢,基本原因是函数执行后通过指针或引用返回局部变量无效。所以在这里,我们返回该函数本地的“hello world”,所以我关心的是,一旦函数超出范围,该位置是否有效?
-
但是有更好的方法来实现这一点。例如,像
"Hello world"这样的常量值可以声明为与您的函数在同一范围内的常量:const char* foo = "Hello world";您根本不需要该函数。