引用是变量的别名,格式 为 类型 &引用变量=被引用变量
先看一段代码
int main(void)
{
int a=3;
int &b=a; //引用必须初始化
b=10;
cout<<b<<endl;
return 0;
}
输出结果为1 0
可见,改变引用的变量也会改变原变量,反之,更改a的值b也会发生改变
结构体类型的引用
定义结构体变量Coor,并定义c1对其进行引用
#include <iostream>
using namespace std;
typedef struct
{
int x;
int y;
}Coor;
int main(void)
{
Coor c1;
Coor &c=c1; //引用必须初始化
c.x=10;
c.y=11;
cout<<c1.x<<c1.y<<endl;
return 0;
}
输出结果1011
指针类型的引用
形式 *&指针引用名=指针
#include <iostream>
using namespace std;
int main(void)
{
int a=10;
int *p=&a; //定义指针
int *&q=p; //引用p
*q=20; //更改q指针对应的数据
cout<<a<<endl;
}
引用作为函数参数
看一段不用引用的函数调用交换两个变量的值
#include <iostream>
using namespace std;
void fun(int *a,int *b) //a,b为指针,*a,*b对应存放的数值
{
int c=0;
c=*a;
*a=*b;
*b=c;
cout<<*a<<'\n'<<a<<endl;
}
int main(void)
{
int x=10,y=20;
fun(&x,&y); //传入x,y的地址
cout<<x<<y<<endl;
}
输出结果
这里是对x,y的地址传入,形参为其指针。
使用引用作为函数参数操作:
#include <iostream>
using namespace std;
void fun(int &a,int &b) //&a,&b作为x,y数值的引用
{
int c=0;
c=a;
a=b;
b=c;
cout<<a<<'\n'<<&a<<endl;
}
int main(void)
{
int x=10,y=20;
fun(x,y); //直接传入x,y数值
cout<<x<<y<<endl;
这里将x,y传入之后,a,b作为x和y的别名。之后对a,b进行交换相当于对x,y进行交换。输出结果如下
其中a对应x的值为20.&a存放的是a的地址