内存分区&&C++之引用的深度剖析

1.内存分区

意义:不同区域数据赋予不同的生命周期,我们可以更加灵活的进行编程的管理;

(1)代码区:存放二进制的机器指令,

代码区的两个特点,

一个是共享的,就是无论我们运行多少次这个程序,内存里面都会有一份,而不会进行拷贝;

另外一个特点是只读的,什么是只读呢,就是我们无法进行写的操作,防止程序意外的修改指令;

(2)全局区:全局变量,静态变量(static修饰的变量),常量等等

常量分为字符串常量,const修饰的全局变量(const修饰的全局变量在全局区,const修饰的局部变量不在全局区);

该区域数据特点:程序结束,操作系统管理释放

(3)栈区:由编译器管理分配和释放;-------不要返回局部变量的地址

栈区存放的是形参和局部变量

(4)堆区:由程序员开辟和释放;

我们在堆区上使用new关键字开辟空间,把int类型的数据10的地址传递给p指针(也就是说返回的是指针),指针是在栈区的,指针指向的10是使用new在堆区开辟的;

(5)mew运算符的使用:在堆区开辟空间,使用delete释放空间;

我们使用delete把在堆区开辟的空间释放掉,释放之后如果还要打印,就是非法访问了;

(6)mew运算符开辟数组:我们需要使用中括号(小括号表示开辟一个元素的空间),利用循环进行赋值和打印,最后释放,释放的时候要加上中括号(表示我们要释放一段很长的空间);

2.引用

(1)引用的基本语法

引用就是取别名,基本的格式就是   数据类型 &别名=原名,原名和别名指向的是同一块内存空间;对别名的修改同样会影响原名 ;

(2)引用的注意事项

1.必须要初始化,2.引用初始化以后,不能更改引用

理解:必须初始化就是不能只写int &b却不告诉编译器这个b是哪个变量的引用,这样做是不行的,我们必须为b指定一个引用的对象;不能修改就是我们的int a=10;int b=20;原来我们的int&c=a;后来我们想要进行修改,我们写的是b=c,这样写并不能够修改引用的对象,而是进行的赋值;

(3)引用作为函数的参数

我们利用数据的交换认识一下引用如何作为函数的参数;

(4)引用作为函数的返回值

不要返回局部变量的引用,而且使用引用时,函数可以作为左值修改变量的大小;

(5)引用的本质

引用的本质是指针常量:

(6)常量引用

引用通常用来修饰实参:这样就可以防止一些操作改变实参的数值。        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值