注:转载请标明原文出处链接: https://lvxiaowen.blog.youkuaiyun.com/article/details/106989359
1 引用是什么?
生活中很多人既有姓名也有外号,引用的概念类似于人的外号。
引用变量是一个别名,即某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
2 引用类型
2.1 基本数据类型的引用
格式:[类型名] &[引用名]=[目标变量名];
分别对别名和原名赋值,二者会相互影响,代码如下:
#include <iostream>
using namespace std;
int main(void)
{
int a = 10;
int &b = a;
b = 20;
cout << b << endl;
a = 30;
cout << b << endl;
system("pause");
return 0;
}
执行结果:
2.2 结构体类型引用
格式:[结构体类型名] &[引用名]=[目标变量名];
2.3 指针类型的引用
格式:[类型名] *&[指针引用名] = [目标指针名]
3 引用作函数参数
传递引用给函数与传递指针的效果是一样的。
使用引用做函数参数,将两个值进行交换,代码如下:
#include <iostream>
using namespace std;
void fun(int &a, int &b)//x的别名为a,y的别名为b
{
int c = 0;
c = a;
a = b;
b = c;
}
int main(void)
{
int x = 10, y = 20;
cout <<"交换前x,y的值为:" << x << "," << y << endl;
fun(x, y);
cout << "交换后x,y的值为:" << x << "," << y << endl;
system("pause");
return 0;
}
执行结果:
4 引用 vs 指针的区别
(1) 不存在空引用。引用必须连接到一块合法的内存。
(2) 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可在任何时候指向另一个对象。
(3) 引用必须在创建时被初始化。指针可以在任何时间被初始化。
参考资料
[1] https://www.imooc.com/learn/381
[2] https://www.runoob.com/cplusplus/cpp-references.html