C++学习笔记
对B站up码农论坛C++学习笔记,如有我的思路存在错误请指出,感谢不尽。
引用的学习
引用的使用方法
声明引用的语法 数据类型 &引用名 = 原变量名
引用是已定义的变量的别名,主要用途是用作函数形参和返回值,在程序中可以互换,用谁都一样
int a = 3;
int& ra = a; // a的引用
注意事项
- 引用数据类型与原变量名的数据类型相同
- 引用名和变量名可以互换,他们的值与内存单元是相同的
- 必须在声明引用时初始化,初始化后不可改变
引用的本质
本质是指针常量:同样不可修改指向目标,必须在定义时初始化。
// 三个变量共享一块内存
int a = 3;
int& ra = a; // a的引用
int* const pa = &a; // a的指针常量
作为参数传递进函数时,传引用与传指针相同,会改变变量的值
各种形参的使用场景
1) 不需要再函数中修改实参
- 如果实参很小,如内置数据类型或小型结构体,则按值传递(直接传值,反正也不需要修改,类似于传size进去)
- 如果实参是数组,则使用const 指针,因为这是唯一的选择 (数组没有引用的说法,只能传指针)
- 如果实参是较大的结构,则使用 const 指针或const 引用。C
- 数据实参是类,则使用const 引用,传递类的标准方式是按引用传递
2) 需要再函数中修改实参
- 如果实参是内置数据类型,则使用指针。只要看到 func(&x)的调用,表示函数将修改X。
- 如果实参是数组,则只能使用指针。
- 如果实参是结构体,则使用指针或引用。
- 如果实参是类,则使用引用。
int a = 0;
fun(a); // 不修改a
fun(&a) // 修改a