c++ - 从函数返回指向局部变量的静态指针

标签 c++ pointers reference static

我找到了这段代码 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();
    //...
}

最佳答案

要使此代码定义明确,nv 都需要是static

现在,*showNumber()undefined behaviour因为它取消引用 dangling pointer .

关于c++ - 从函数返回指向局部变量的静态指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114751/

相关文章:

c# - 文件加载异常 : Could not load file or assembly (The assembly reference did not match the assembly definition found)

c++ - Qt 中的可中断 sleep ?

c++ - int 到十六进制字符串 (C++)

c++ - CMake 目标链接库 "Could NOT find GLUT (missing: GLUT_glut_LIBRARY)"

c++ - 链表示例中的指针

c++ - 使用 `const reference` 在显式构造函数中分配 `std::vector` 成员不是持久的

c++ - Boost:Bootstrap.bat 编译失败以构建 bjam

c - 我在这个 C 程序中使用的指针正确吗?

c++ - C++中通过引用传递类成员函数返回值

function - 在 Rust 中实际需要 move 到函数的情况