Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 615 Bytes

045 - 一个局部变量可以在其作用域之外访问么.md

File metadata and controls

29 lines (21 loc) · 615 Bytes

https://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope

问题

#include <iostream>

int * foo()
{
    int a = 5;
    return &a;
}

int main()
{
    int* p = foo();
    std::cout << *p;
    *p = 8;
    std::cout << *p;
}

上面的代码运行不会报错,并且会输出 58,这是为什么?

回答

局部变量确实是不可以被外部使用的。

你的这种情况只是恰巧那块内存区是存在的,但它并不属于 foo 函数里的 a 所有,在实际编程中一定不要这么用,很大概率程序会崩溃。