我找到了这段代码 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();
//...
}
最佳答案
要使此代码定义明确,n
和 v
都需要是static
。
现在,*showNumber()
有 undefined behaviour因为它取消引用 dangling pointer .
关于c++ - 从函数返回指向局部变量的静态指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114751/