#include <iostream>
using namespace std;
int* func()
{
int a = 10;//局部变量,存放在栈区,栈区的数据在函数执行完后自动释放
return &a;//返回局部变量的地址
}
int main(){
//接受func函数的返回值
int *p = func();
cout << *p << endl;//第一次可打印正确的数字,是因为编译器做了保留
cout << *p << endl;//第二次这个数据就不再保留
system("pause");
}
运行结果如下
第一次结果为正常值,第二次就会发生错误