一、引用的概念
引用(reference)是另一标识符的别名,可以说是C++的一种新的变量类型,是对C的重要扩充。当建立引用时,程序用另一个变量或对象(目标)的名字初始化它(即它代表了标识符的左值),此时,引用作为目标的别名而使用,对引用的改动实际就是对目标的改动。
为建立引用,在编程时应先写上目标的类型,再写引用运算符“&",然后是引用的名字。引用能使用任何合法的变量名,它可以在该变量出现的任何地方出现,这称为独立引用。
int a=10;//定义变量a
int &b=a;//引用变量a
a=100;
b=20;//a=20;
如左图
声明b是对整数a的引用, 并且使其初始化为变量a的一个别名。一旦b同a的内存对象发生了联系,就不能改变,而且,对b的访问就是对a的访问,对a的访问也就是对b的访问。变量a和引用b共用同一内存空间
注意:类型后跟&是引用,其它地方则是取地址:
int *p=&i;//取i的地址
printf("%d",&i);//非引用,取i的地址
二、引用的使用
引用变量
int i;
int&j=i;
int&k=i;
i=1;
j=2;
k=3;
printf("i=%d,j=%d,k=%d",i,j,k);
引用作函数参数
int add(int&a,int &b)
{
a=a+b;
return a;
}
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,k;
i=1;
j=2;
k=add(i,j); //i=i+j;
printf("i=%d,j=%d,k=%d",i,j,k);
getchar();
return0;
}
引用作函数返回值
int & add(int&a,int &b)
{
a=a+b;
return a;
}
int _tmain(int argc, _TCHAR* argv[])
{
int i,j;
i=1;
j=2;
int &k=add(i,j); //i=i+j;
k=888;
printf("i=%d,j=%d,k=%d",i,j,k);
getchar();
return0;
}