【发布时间】:2014-03-01 13:04:37
【问题描述】:
我发现此代码on web 为例,但我认为这是不正确的。返回自动变量的地址,这只是巧合,它有时可能会起作用:
返回一个指向被破坏的局部变量的指针,该变量成为无效的内存位置,是未定义的行为。
我唯一的一点犹豫是指针是static,但我认为这没有任何改变,因为这是应该是static而不是指针的变量:局部变量将被破坏。你能确认或否认吗?
double *& showNumber()
{
double n = 1550.85;
static double *v = &n;
return v;
}
int main(int argc, char *argv[])
{
double sn = *showNumber();
sn = *showNumber();
//...
}
【问题讨论】:
-
static 会在您初始化它们后在整个程序期间持续存在,所以这对于 v 应该没问题,而不是 n
标签: c++ pointers reference static