【无标题】c++学习2

内存分配模型
代码区:存放函数体的二进制代码,由操作系统管理
全局区:存放全局变量 静态变量 以及常量
堆区:由程序员分配和释放,若程序员不释放,系统回收
栈区:由编译器自动分配释放,存放函数的参数值,局部变量

在程序编译后,生成exe可执行文件,未执行该程序前分成两个区域:
代码区:
存储cpu执行的机器指令 代码区共享,防止多次执行浪费内存, 代码区只读, 防止无意修改

全局区
全局变量和静态变量存放于此,字符串常量和其他常量也存放于此
该区域的数据在程序结束时由操作系统释放

不在全局区的数据: 局部变量, 局部常量
在全局区的数据: 全局变量, 静态变量(static),常量,字符串常量,const 修饰的全局变量(全局常量)

指针本质也是放在栈上的局部变量

new 操作符

用new操作符在堆区开辟数据
语法 new 数据类型

int * p = new int(10)

delete 指令释放 释放数组时 delete[] 数组名

c++ 引用
引用的基本使用
作用: 给变量起别名
语法: 数据类型 &别名 = 原名
引用需要初始化 引用初始化后不能更改。

引用做函数参数
作用:函数传参时,可以利用引用的技术让形参修饰实参。 从而可以简化指针修改实参

以引用的方式做返回
int & blabla(){
}
但是不要返回局部变量的引用
函数变量甚至能当成左值 但是发现没啥用

引用的本质就是一个指针常量(即指向不可变 含量可变)
当函数使用const int a 传参时 不可改变a的值

函数的默认参数
在c++中 函数的形参列表可以含有默认值
例如
int func(int a= 10; int b = 10){
}
如果使用默认值,则后续参数都应应用默认值
如果函数的声明有默认参数 那么函数的实现就不能有默认参数 声明和实现只能有一个有默认参数

函数的形参列表了可以有占位参数,用来做占位,调用函数时必须填写该位置
ex: void func(int a, int){
}
占位参数可以有默认参数

void func(int a, int = 10){
}

函数重载
可以让函数名相同 提高复用性
函数重载的满足条件:
1.在同一个作用域下
2.函数名称相同
3.函数参数类型不同,或者个数,顺序不同
例如 void func() 和 void func(10); 但是函数的返回值类型不可以做为函数重载的条件 需要注意参数重载和默认参数之间的冲突

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值