黑马课程C++笔记 | 内存分区,new运算符,引用等核心知识点
1.内存四区
内存四区:代码区、全局区、栈区、堆区



2.new运算符
语法:new 数据类型(对应的释放操作符为delete)
利用new创建的数据,会返回该数据对应类型的指针
例:
-
整型:int * p = new int(10);
delete p; -
数组:int *arr = new int[10];
delete[] arr;
3.引用
作用:给变量起别名(别名可以和原名一样)
语法:数据类型 &别名 = 原名
本质:指针常量(指针指向不可改变,指向的值可以改变)
*注:由于别名原名调用的是同一片内存空间,所以可以通过其中任意一个名称对内存的值进行修改
例:
- int a = 10;
int &b = a;
b = 20; //则a也变成20

- 引用必须初始化
int &b;(×)
int &b = a;(√) - 一旦初始化,就不可以更改
int &b = a;
b = c;(×)//第二句不是更改引用,属于赋值操作
*注:形参实参
-
值传递,形参不修饰实参
![]()
-
地址传递,形参修饰实参
![]()
-
引用传递,形参修饰实参
![]()
-
引用做函数返回值时,函数调用可以作为左值
![]()
注:
引用相当于指针常量:int &b = a; =》int * const b = &a;
常量引用const int &a = 10;(使值变成只读,防止误操作) =》int temp = 10; const int &a = temp;
4.函数参数(默认参数、占位参数)
-
默认参数
![]()
-
占位参数
![]()
5.函数重载
满足条件:
1、同一个作用域下;
2、函数名称相同;
3、函数参数类型不同,或者个数不同,或者顺序不同
例:顺序不同

- 函数的返回值不同不可以作为函数重载的条件
-
引用作为重载的条件
![]()
-
函数重载碰到默认函数
![]()









浙公网安备 33010602011771号