int main()
{
int a=10;
int &b =a;
//其含义就是将a和b指向同一个内存空间,不管改编a还是b都将互相影响
printf("%d,%d",a,b);
}
运行结果:
int main()
{
int a=10;
int &b =a;
b=5;//同时改变,我们就可以大胆推测,a和b都是同一个地址,b只是一个别名
printf("%d,%d",a,b);
}
运行结果:
-
目的:在引用的使用中,单纯给某个变量去别名是毫无意义的,引用的目的主要用于在函数参数的传递中,解决大块数据或对象的传递效率和空间不如意的问题
-
特点1:用引用传递函数的参数,能保证参数在传递的过程中不产生副本,从而提高传递效率,同时通过const的使用,还可以保证参数在传递过程中的安全性
-
特点2:引用本身是目标变量或对象的别名,对引用的操作本质上就是对目标变量或对象的操作。因此能使用引用时尽量使用引用而非指针
void exchange(int &p1 ,int &p2){
int a =p1;
p1=p2;
p2=a;
}
int main()
{
int a=10;
int b =15;
printf("before %d,%d",a,b);
exchange(a,b);//能够实现交换
printf("later %d,%d",a,b);
}
结果:
指针传递参数和指针引用传递参数
#includeusing namespace std; void fun1(int *p){ p++; } void fun2(int *&p){ p++; } int main() { int b[3] ={1,2,3}; int *p=b; fun1(p);//简单的指针传递,将指针位置加1 printf("fun1 *p = %d",*p); fun2(p);//使用指针引用传递,将指针位置加1 printf("fun2 *p = %d",*p); }
结果:
惊讶的是指针引用传递,他把mian函数中的p的值也改变了,等同于fun2函数中p与main函数中的p是同一个内存空间,改变了p的值。即可改变p指向的值,也可以改变p的值
1. 相比于指针,引用的方式可以像一般变量一样的操作即可,使用极其方便
2. 效率方面,更加快捷,大大加快了
1. 引用等价于两个变量有相同的地址
2. 引用仅仅是一个别名
https://www.cnblogs.com/duwenxing/p/7421100.html



