c++学习笔记(2)

内存分区模型

c++程序在执行时,把内存大方向划分为四个区域。

1,代码区(程序运行前):存放函数体的二进制代码,由操作系统进行管理的

ebbf9c4912db40fcaa9f7a3f449e5029.png

 

2,全局区(程序运行前):存放全局变量和静态变量以及常量

b503c9bd8c5c4fa3a81457259b8e188f.png

 

3,栈区(程序运行后):由编译器自动分配释放,存放函数的参数值,局部变量等。

注意事项:不用返回局部变量的地震,局部变量在栈区,由编译器自动释放,即函数调用完后该变量就被销毁,传回的地址是野指针。

46cffff7d1084e7e8644ccf4c3b5c5cd.png

 

4,堆区(程序运行后):由程序员分配和释放, 若程序员不释放, 程序结束时由操作系统回收。

利用new操作符在堆区开辟数据(返回该数据类型的指针),用delete释放(delete  加指针)。

37468e56359f4f979c20fe574e1ce8bb.png

 数据10是存放在堆区,指针p存放在栈区,p指向的是在堆区的10的地址。

c40a7f105b8d44419f3b543634f2119f.png

 


 

引用

引用的作用:给变量起别名。

语法:数据类型 &别名=原名

原名和别名操作的是同一块内存,固对别名修改原名也会变。

引用注意事项

1,引用必须初始化。

2,引用初始化后不可修改。

04e2cb74f80f46fa901c63a4532df3a6.png

 引用作函数参数,形参会修饰实参

6674e9268e1f44a296e085df802c875f.jpg

 b1c90fb1e14547988a829466d8ef6caf.jpg

 引用作函数的返回值

1,不要返回局部变量的引用

2,如果函数的返回值是引用,这个函数调用可以作为左值.

880fef9af1a940f58dd8a63c28d7ef79.jpg

d92c5fa56af144b8abd27b5941f23f06.jpg 

引用的本质是指针常量,但所有的指针操作编译器都帮我们做了

ba8a49406c3c4e929bcce01abfbad213.png

 常量引用(用来修饰形参,防止误操作)

55b447a94b2a42058b7f8dfbad646b43.png

 

引用一块常量需要在前面加const,且不能修改。

 

函数提高

函数默认参数:c++中函数形参可以有默认值。1,如果自己传入数据,就用自己的数据,如果没有那么用默认值。2,如果某个位置有了默认值,那么从这个位置往后都必须有默认值。3,函数的声明和实现只能有一个有默认参数。

c3a52d2980ff46dea69ac6e2e16c8f33.jpg

 占位参数,数据类型后不加形参(现阶段用不到,后面会用)

ae33c5798f38469d8f6229c50e66e3fa.png

 

函数重载

c6ad328e4f2d440f9869cd6f934520d4.png

 2dd352644e4142d7afbaf79d930e8ffd.png

 函数重载注意事项

1引用作为重载得条件

72f73df1b3b14eeba85f739122f5edb6.jpg

a1fc5ee6c0d6467687c97b3cb916c1a0.jpg 

 2函数重载碰到默认参数

12efb96326f849e793078eb4a509efa7.png

若调用函数时传一个参数,则函数报错,若传两个参数,则调用第一个函数。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值