往往我们定义的局部变量,或者形参都会存放在栈区。一般不要返回局部变量地址。
实例如下:
#include<iostream>
using namespace std;
//栈区数据注意事项 --不要返回局部变量地址
//栈区的数据由编译器管理开辟和释放
int* func(int b) {//形参数据也会放在栈区
b = 100;
int a = 10;//局部变量,存放在栈区,栈区的数据在函数执行完后自动释放
return &a;//返回局部变量地址
}
int main()
{
//接受func函数的返回值
int* p = func(1);
//第一次编译器给做了数据保留
cout << *p << endl;
//第二次这个数据就不保留了,打印乱码
cout << *p << endl;
system("pause");
return 0;
}
结果:
10
8459515
请按任意键继续. . .