1.引用是什么
引用就是被引用变量的一个“别名”,读写引用时,相当于直接读写被引用的变量本身。
对于“别名”的理解:
先有一个提前定义好的变量,再才有这个变量的别名;
即:引用必须是附着在某一个已经存在的变量上。
另外,一个变量可以有多个“别名”的,但每个“别名”只能给一个变量;
这并不冲突:变量可以有多个别名,但别名不能冲突!
2.引用的申明
引用的声明方式如下:
type& referenceName = variable;
其中
“type”是某种数据类型,比如“int”;
referenceName是引用变量的名字;
variable是被引用变量。
注意:
引用必须在声明的时候就被初始化,因此需要,variable必须是提前定义好的一个变量。
关于&的说明:
&(读成and符号)本身是取地址的符号,当把&放在变量的定义里面时,&符号就是引用,而不是取地址!
示例:
# include <iostream>
int main()
{
int x, & rx = x; //等价 int x;int& rx = x;
rx = 5;
std::cout << x << std::endl; //输出数字5
return 0;
}
3.引用的性质
-3.1 引用必须在声明的时候初始化;
-3.2 通过引用所做的读写操作实际上是作用于原变量上;
-3.3 引用一旦初始化,引用名字就不能再指定给其它变量;
4.引用传递
我们申明一个函数时,它的参数叫做形式参数,简称形参;
当在调用函数的时候,传的参数叫做实际参数,简称实参;
当形参为引用类型时:引用传递;
对于引用传递的函数:
调用时只需传普通变量即可;
在被调函数中改变引用变量的值,则改变的是实参的值(引用类型的形参就可以看成是实参变量本身);
5.多个引用的示例
#include <iostream>
int main() {
int a{
0 }, b{
1 };
int& r{
a };//引用在声明的同时就要初始化,r是a的别名;
std::cout << "1、a=" << a << " b=" << b << std::endl;
r = 42;
std::cout << "2、a=" << a << " b=" << b << std::endl;
r = b;
std::cout << "3、a=" << a << " b=" << b << std::endl;
int& r2{
a };//继续给a起别名;
r2 = 77;
std::cout << "4、a=" << a << " b=" << b << std::endl;
int& r3{
r };//给r起别名,即给a起别名;
r3 = 66;
std::cout << "5、a=" << a << " b=" << b << std::endl;
return 0;
}
运行如下: