#include "iostream"
using namespace std;int*func(int b)//形参也会放在栈区{
b =100;int a =10;//局部变量,存放在栈区栈区的数据在函数执行完后自动释放return&a;//返回局部变量的地址}intmain(){int* p =func(1);
cout <<*p << endl;//第一次可以打印出数字10,是因为编译器做了保留
cout <<*p << endl;//第二次打印出的是地址,因为数据已经清楚
system ("pause");return0;}
4.堆区(运行后)
由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。
#include "iostream"
using namespace std;int*func(){int* p =newint(10);//new关键字可以在堆区开辟数据return p;}voidtest01(){int* p =func ();
cout <<*p << endl;
cout <<*p << endl;}voidtest02(){int* arr =newint[10];//用new在堆区创建数组for(int i =0; i <10; i++){
arr[i]= i +100;//给数组赋值}for(int i =0; i <10; i++){
cout << arr[i]<<endl;}
delete[] arr;//释放数组内存}intmain(){int* p =func();
cout <<*p << endl;//在delete或者程序结束之前,数据是一直存在的
cout <<*p << endl;voidtest01();
delete p;test02();
system ("pause");return0;}