typora-root-url: G:\MarkDown\IMG
1.引用类型的定义
引用是给一个变量起别名
定义引用的一般格式**:**
类型 &引用名 = 变量名;
例如:int a=1;
int &b=a;
// b是a的别名,因此a和b是同一个单元
注意:定义引用时一定要初始化,指明该引用变量是谁的别名
在实际应用中,引用一般用作参数传递与返回值
2.引用的特性
1) const引用是指向const对象的引用
const int ival = 1024;
const int& refVal = ival; //正确
int &ref2 = ival; //ERROR 类型不匹配
![](/../../MarkDownIMG/TIM%E6%88%AA%E5%9B%BE20191230153628.png)
3. 按引用传递
引用传递方式是在函数定义时在形参前面加上引用运算符"&"
例如:swap(int &a,int &b);
按值传递方式容易理解,但形参值的改变不能对实参产生影响
地址传递方式通过形参的改变使相应的实参改变,但程序容易产生错误且难以阅读
引用作为参数对形参的任何操作都能改变相应的实参的数据,又使函数调用显得方便、自然
![](/../../MarkDownIMG/SWAP.png)
注意:引用作参数时,函数的实参与形参在内存中共用存储单元,因此形参的变化会使实参同时变化。
4.引用作为返回值
引用的另一个作用是用于返回引用的函数
函数返回引用的一个主要目的是可以将函数放在赋值运算符的左边。
注意:不能返回对局部变量的引用。
![](/../../MarkDownIMG/TIM%E6%88%AA%E5%9B%BE20191230153628-1577692605770.png)
![](/../../MarkDownIMG/TIM%E6%88%AA%E5%9B%BE20191230153628-1577693311742.png)