参考视频:【考研】C++:6分钟带你搞懂C++中的引用_哔哩哔哩_bilibili
目录
1.引用的概念
引用是 C++ 中的一种类型,它为一个已经存在的变量创建了一个别名,它是某个已存在变量的另一个名字。对引用的操作与对变量名直接操作完全一样。
2.引用的初始化
类型标识符 &引用名 = 目标变量名:
“&”并不是取地址操作符, 而是起标识作用,标识所定义的标识符是一个引用。
引用声明完成以后相当于目标变量有两个名称
3.定义引用注意事项
(1)引用在定义时必须初始化,不能声明后再赋值。例如,int& ref;
是错误的,必须写成 int& ref = x;
(2)引用在初始化时只能绑定左值,不能绑定常量值。例如,int& ref = 5;
是错误的
(3)引用一旦被初始化为某个变量,就不能再指向其他变量
(4)数组的引用
数组的引用是指一个引用变量指向整个数组,而不是数组中的单个元素。
数组本身可以被引用,但不能像普通变量那样直接创建数组的引用。例如,可以声明一个引用指向整个数组,需要指定数组的类型和大小,语法上需要使用数组的指针:
int arr[5] = {1, 2, 3, 4, 5};
int (&arrRef)[5] = arr; // arrRef 是数组 arr 的引用
int (&arrRef)[5]
表示 arrRef
是一个引用,指向一个包含 5 个整数的数组
不能单独引用数组元素:不能像
int& element = arr;
这样直接引用整个数组因为数组名代表的是指向数组首元素的指针,而不是一个左值。
4.引用vs指针(区别)
三个主要的不同:
1.不存在空引用。引用在初始化时必须指向一个有效的内存地址;指针可以被赋值为 null
表示不指向任何有效的内存地址。
2.引用被初始化为一个对象,就不能被指向到另一个对象。引用永久绑定到最初的对象
指针可以在任何时候指向到另一个对象。
3.引用必须在创建时被初始化;指针可以在任何时何被被初始化或重新赋值
5.引用的应用
C++增加引用的类型,主要的应用就是把它作为函数的参数,以扩充函数传递数据的功能,引用中作为函数参数时是区别于值传递与址传递的引用传递. 还有函数返回引用等
函数返回引用
以一段代码为例
#include <iostream>
using namespace std;
// 函数:返回两个整数引用中较大值的引用
int &Max(int& i, int& j)
{
// 判断并返回较大值的引用
return i > j ? i : j;
}
int main()
{
int x, y;
cout << "请输入两个整数:";
cin >> x >> y;
// 直接将较大值的引用赋值为 10
Max(x, y) = 10; // 如果 x 大于 y,则 x 被赋值为 10;否则 y 被赋值为 10
// 输出当前较大值(现在已经被设置为 10)
cout << "较大的值是:" << Max(x, y) << endl;
return 0;
}
Max(x, y) = 10;
的意思是将返回的引用赋值为 10,返回的是对原始变量的引用,通过这个赋值操作直接修改了 x
或 y
函数 Max
返回的是 i
或 j
的引用,因此可以直接赋值来修改原始变量。