1、内存四区
代码区:存放函数体二进制代码,由操作系统进行管理。特点:共享、只读、存放CPU 执行的机器指令。
全局区:存放全局变量,静态变量以及常量(字符串常量,const
修饰的全局常量)。和不在全局区的变量相比有这些特点:地址区域不同。
注意:代码区和全局区存在于程序执行之前,即生成exe文件之前,而栈区和堆区是在程序执行之后。
栈区:存放函数的参数值,局部变量等,会自动释放,所以不要返回局部变量的地址。
堆区:由程序员分配和释放,若程序员不释放,在程序运行结束后操作系统会自行释放。
在 c++ 主要利用 new
开辟内存,语法为:new 数据类型 ,变举例;变量: new int(10)
, 数组: new arr [ 元素个数]。
堆区释放用delete
关键字,在释放变量时为:delete 变量名,释放数组为:delete [ ] 数组名
意义;不同区域生命周期不同,更方便管理,让编程更加灵活。
引用
1、基础知识
本质:给变量起别名。
语法:数据类型 &别名 = 原名
注意事项:引用必须初始化(即必须指明是谁的别名,int &b 错误,int a=10;int &b = a正确
),初始化后就不可以更改,即如果b是a的别名,就不可以在做别的变量的别名。
2、引用做形参
引用做形参会改变实参
格式:举例:
void test (&a,&b)
{
}
int main()
{
int a=10,b=20;
test(a,b);
}
3、引用做函数的返回值
1)不能返回局部变量的引用;
2)如果函数的返回值是引用,这个函数调用可以作为左值;
4、引用—引用的本质
本质为指针常量
int & ref = a 等价于 int * const = &
5、常量引用
引用做形参,在形参前加上 const 防止误操作,避免形参改变实参。