引用
引用可以对别名进行引用!
#include<iostream>
using namespace std;
int main()
{
int a = 0; // 李逵
int& b = a; // 铁牛
int& c = b; // 在铁牛的基础上取名为黑旋风
return 0;
}
引用的特性:
- 引用在定义的时候必须初始化;
- 一个变量可以有多个引用(可以对引用再进行引用);
- 引用一旦引用一个实体,再不能引用其他实体
java当中没有指针! 因此每个节点中存放的是下一个节点的引用!
C++不能这样实现,因为C++中的引用是不能被修改的!
同一个域的引用不能同名;不同域的引用可以同名!
引用的使用场景
-
做参数(输出型参数)
void Swap(int& left, int& right)
{
int temp = left;
left = right;
right = temp;
}
- 输出型参数:此时形参的改变会影响实参(引用)
- 输入型参数 :形参的改变不会影响实参!
struct + 结构体得名字才是结构体的类型!(C语言中)
但是C++可以直接使用结构体的名字!
引用做参数还可以提高效率(后面详解)(大对象/深拷贝对象)
#include<iostream>
using namespace std;
void swap(int& p, int& q)
{
int tmp = p;
p = q;
q = tmp;
}
int main()
{
int aa = 10; // 李逵
int bb = 20;
int& a = aa; // 铁牛
// int& c = b; // 在铁牛的基础上取名为黑旋风
int& b = bb;
cout << aa <<' '<<bb<< endl;
//cout << bb << endl;
swap(aa, bb);
cout << aa << ' ' << bb << endl;
return 0;
}
做返回值
分析下面两个代码:
int Count1()
{
int n = 0;
n++;
// ...
return n;
}
(n拷贝给临时变量,临时变量再拷贝给ret!) </