#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
所有,在实际编程中一定不要这么用,很大概率程序会崩溃。