1 引用的概念
引用是给已经存在的变量取的别名,它与该变量共用同一块内存空间。
2 引用的特性
2.1引用必须初始化
2.2一个变量可以有多个引用
2.3一个引用只能引用一个实体
3 引用的使用
3.1引用传参
3.2引用做返回值
因为引用做为返回值共用的是同一块空间,同时改变而节省了拷贝提高了效率,一举两得。
4.const与引用
主要涉及访问权限:访问权限不可以放大,可以不变或缩小
4.1访问权限放大
4.2访问权限不变
#include<iostream>
int main() {
//情况一
const int a = 1;
const int& b = a;
//情况二
const int& c = 10;
//常数不能改变,引用要加const
//情况三
const int& d = 3 * a;
double e = 3.14;
const int& f = e;
//3*a与double转换为int类型的结果都会先储存在临时变量里
//而c++的临时变量具有常性,所以引用要加const
return 0;
}
4.3访问权限缩小
#include<iostream>
int main() {
int a = 1;
const int& b = a;
return 0;
}
5指针与引用
5.1区别
1语法概念上引用是一个变量的取别名不开空间,指针是存储一个变量地址,要开空间。因此sizeof中含义也不同,引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下 占4个字节,64位下是8byte)
2 引用在定义时必须初始化,指针建议初始化,但是语法上不是必须的。故指针很容易出现空指针和野指针的问题,引用很少出现,引用使用起来相对更安全⼀些。
3 引用在初始化时引用⼀个对象后,就不能再引用其他对象;而指针可以在不断地改变指向对象。可以根据此点不同结合场景需求考虑使用哪一个。
4 引用可以直接访问指向对象,指针需要解引用才是访问指向对象。
5.2结合
指针变量也可以取别名:像void ListPushBack(LTNode*& phead, int x)就可以代替二级指针