C++的引用介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yc1515707718/article/details/80630959

1.引用的概念及用法 


      引用是C++中相比C语言的一个新的玩法,那C++中为什么要出现这个引用的功能昵?我们知道在C语言中经常涉及到传参的操作,而传参就是赋值的过程,赋值需要内存拷贝,对于,int ,float, doube这些类型的变量来说,拷贝内存没有任何压力,但对于数组,结构体,对象,这些大小不可估计的类型来说,这样的拷贝会消耗很大的时间,无疑降低程序的效率,通常这样的情况C语言会传指针解决,但C++中有了一个更加便捷的方式来解决,就是传引用,在C语言中返回函数值时,会生成一个临时变量来存储返回值,若是返回值很大时这个开销就很大,以引用返回返回的就是这个返回数据的指针,这样大大节约了开销,提高了效率,引用可以看作是一个数据的别名,通过这个别名就可以找到这个数据,


引用的使用方法:

type& name=data;

例如:int& b=a;


使用引用的规则:

1. 一个变量可取多个别名
2. 引用必须初始化
3. 引用只能在初始化的时候
引用一次,不能改变为再引用其他的变量。




扫描二维码关注公众号,回复: 3254783 查看本文章

2.引用做参数 

       当引用做参数时,这个形参就是实参的别名,他和实参占用同一块地址,因此使用引用代替指针将更加方便。如:

void Swap (int& left, int& right)
{
int temp = left;
right = left ;
left = temp ;
}




3.引用做返回值 

       当函数要返回一个数值时,通常就是直接返回,但是用传引用返回效率会更高,这是因为在C++中返回函数值时,会生成一个临时变量来存储返回值,若是返回值很大时这个开销就很大,以引用返回返回的就是这个返回数据的指针,这样大大节约了开销,提高了效率。

汇编层:

传值生成临时变量

      这里mov是传值

传引用生成临时变量

     这里lea是传地址


4.引用和指针的区别  

        引用虽然和指针很相似,但他们不是一个东西

       例如:int& b=a;  这里b的地址就是a的地址,所以说b不占内存,但其实b还是占内存的,b在底层还是指针,只是在内部进行了封装,使使我们看起来是a的地址罢了。


1. 引用只能在定义时初始化一次,之后不能改变指向其它变量(从一而终);指针变量的值可变。
2. 引用必须指向有效的变量,指针可以为空。
3. sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。
4. 指针和引用自增(++)自减(--)意义不一样。
5. 相对而言,引用比指针更安全。





猜你喜欢

转载自blog.csdn.net/yc1515707718/article/details/80630959