一、内存
内存分区模型 C++程序在执行是内存分为4个区域
代码区:存放函数体的二进制代码,由操作系统进行管理
全局区:存放全局变量和静态变量以及常量
栈区:用编译器自动分配释放,存放函数的参数值局部变量等
堆区:由程序分配和释放若程序员不释放,程序结束时由操作系统释放
内存四区意义:不同区域存放的数据赋予不同的生命周期给我们更大的灵活编程
1.1代码区
程序运行前生辰exe以执行程序,来执行程序前分为两个区域
存放CPU执行的机器指令,代码区时共享的,共享的目的时对于频繁被执行的程序只需要在内存中有一份代码即可
代码区时只读的使其只读的原因时防止程序意外低修改它的指令
1.2全局区
全局变量和静态变量存放在此全局区还包含了常量区字符串常量和其他常量也存放在此该区域的数据在程序结束后由操作系统释放
1.3栈区
由编译器是自动释放,存在函数的参考数值局部变量等
注意事项:不要放回局部变量的地址,栈区开辟的数据由编译器自动释放
1.4堆区
由程序员分配释放若程序员不释放,程序结束后由操作系统回收,在C++中主要利用new在堆区开辟内存
1.5 new操作符
C++利用new操作符在堆区开辟数据,堆区开辟的数据由程序员手动释放,操作符delete
语法:new 数据类型
利用new创建的数据全返回发改数据对应类型指针
二、引用
2.1引用的基本使用
作用:给变量起别名
语法:数据类型 &别名=原名
2.2引用的注意事项
引用必须初始化,引用在初始化后不可改变
2.3引用做函数参数
作用:引用是可以作为函数的返回值存在
注意:不要放回局部变量引用
用法:函数调用作为左值
2.5引用本质引用的本质在C++内部实现是一个指针常量
2.6常量引用:用来修饰形容词来防止误操作,在函数形参中可以加入const修饰形参防止参数改变实参
三、函数提高
3.1函数的形参列表中的形参可以是默认值
语法:返回值类型 函数名 (参数=默认值){}
注意事项:1如果某个位置已经有了默认参数那么从这个位置往后从左到右必须右默认值
2、如果声明有默认参数函数实现就不能有默认参数只能有一个默认参数(即要和所定义的函数一致)
3.2函数占位参数:形参列表里可以在占位函数用来占位,调用函数时必须填补位置
语法:返回值类型 函数(数据类型){}
3.3函数重载:函数名可以相同提高复用性
函数重载满足条件:同一个作用域下,函数名称相同,函数参数类型不同、或则个数不同或则顺序不同
注意事项:函数的返回值不可以作为函数重载的条件