c++程序执行时,将内存大致分为四个区域
include
using namepase std;
//全局变量
int q_a=10;
int q_b=10;
//const修饰的全局常量
const int c_q_a=10;
const int c_q_a=10;
int main()
{
//全局区
//全局变量、静态变量、常量
//创建普通局部变量
int a=10;
int b=10;
//这两个局部变量的地址相差不大,说明是储存在同一个区域内
cout <<"局部变量a的地址为:"<<(int)&a<
include
using namepase std;
int fun(int b)//形参数据会放在栈区
{
int a=10;//局部变量存储在栈区,栈区数据在函数执行完后自动释放
return &a;//返回局部变量的地址
}
int main()
{
int *p=fun(1);//接受fun函数的返回值
cout<<*p<
include
using namepase std;
int fun()
{
//利用new关键字,可以将数据开辟到堆区
int *p = new int (10);//指针本质是局部变量,放在栈上,指针保存的数据是放在堆区
return p;
}
int main()
{
int *p = func();
//因为指针指向的内容是放在堆区,由程序员来释放的,所以这里输出两次以上的数值,它依旧是正确的数值
cout << *P<
include
using namepase std;
int fun()
{
//利用new关键字,可以将数据开辟到堆区,返回的是该类型的指针,所以要用指针去接受它
int *p = new int (10);//指针本质是局部变量,放在栈上,指针保存的数据是放在堆区
return p;
}
//new的基本操作
void test01()
{
int *p = func();
cout << *P<