C++核心编程

1.内存分区模型

程序运行前

  代码区:1.存放所写的代码;2.代码区共享+只读不改;

  全局区:存放全局变量,静态变量,常量中的字符串常量,const修饰的全局变量(全局常量);

#include<iostream>
#include<string>
using namespace std;
int B=10;//函数体外为全局变量——位于全局区
int main()
{
int A;//定义在函数体中局部变量——位于其他区域中


cout<<"局部变量的地址:"<<(int)&A<<endl;
cout<<"全局变量的地址:"<<(int)&B<<endl;

//他们不在同一段内存空间中


//静态变量 static+普通变量,就是静态变量

static int C=12;
cout<<"静态变量的地址:"<<(int)&C<<endl;

//静态变量和全局变量的地址挨得较近

//常量
 
   //字符串常量
      cout<<"全局变量的地址:"<<(int)&”wawawa“<<endl;
   const int c_g_A=9;
//const修饰全局常量
      cout<<"全局常量的地址:"<<(int)&c_g_A<<endl;
    const int c_l_B=8;



   //*const修饰局部常量——————不在全局区,和局部变量放一起
       cout<<"局部常量的地址:"<<(int)&c_l_B<<endl;

return 0;
}

运行

  栈区:存放局部变量和函数的形参;*不要返回局部变量的地址,栈区的数据由编译器开辟和释放

​
#include<iostream>
#include<string>
using namespace std;

int *fun(int A)
{
A=10;
return &A;//返回局部变量的地址
}
int main()
{
 int *p = fun(1);
cout<<*p<<endl;//
cout<<*p<<endl;//第一次可以打印,因为编译器做了保留
system("pause");//第二次这个数据不再保留了
}

​

  堆区:由程序员管理释放,程序结束是操作系统回收;利用new关键字进行开辟内存

int*p=new int(10);//接收的是地址
delete p;//内存释放

在堆中创建数组

#include<iostream>
#include<string>
using namespace std;
int main()
{   //在堆中创建一个长度10的数组
	int* p = new int [10];
	//赋值
	for (int i = 0;i < 10;i++)
	{
		p[i] = 100 - i;//[]也适用于指针
	}
	for (int i = 0;i < 10;i++)
	{
		cout << p[i] << endl;
	}

//释放数组+[ ]
delete [] p;
	system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值