1 引用的概念

引用是给已经存在的变量取的别名,它与该变量共用同一块内存空间。

2 引用的特性

2.1引用必须初始化

2.2一个变量可以有多个引用

2.3一个引用只能引用一个实体

3 引用的使用

3.1引用传参

引用&_访问权限

3.2引用做返回值

引用&_访问权限_02

因为引用做为返回值共用的是同一块空间,同时改变而节省了拷贝提高了效率,一举两得。

4.const与引用

主要涉及访问权限:访问权限不可以放大,可以不变或缩小

4.1访问权限放大

引用&_引用_03

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)就可以代替二级指针