一、C++引用产生的原因
引用产生原因:
C++引用的产生是为了解决指针的一些问题。指针可以访问并修改内存中的数据,但指针本身也需要占用内存,并且可能会导致空指针和野指针等问题。引用提供了一种更安全、更方便的方式来访问变量,并且不需要额外的内存开销。同时,由于引用必须在定义时进行初始化,并且不能被重新赋值,因此引用也有助于减少程序中的错误和bug
引用的简单理解就是取别名,和原来被引用的对象公用同一块空间,一个变量可以有多个引用
二、引用的作用
1、作输出型参数
之前交换两变量的值,需要传变量的地址,地址又会产生一个额外的空间,而现在引用则不用传地址,改变传参形式,便交换两个变量的值
2、作返回值-不会产生临时变量
当引用不作返回值时,函数返回出了栈帧,变量就被销毁了,编译器在栈帧销毁时,会创建一个临时变量记录n的值,在返回给ret。
![](https://i-blog.csdnimg.cn/blog_migrate/3ad5c8106e0d6ecfaffc721d8ad7160c.png)
当出了栈帧以后,这块空间便归还给了操作系统。如若我们用引用作返回值,而返回的变量并不在静态区,出了栈帧就被销毁了,那么就会出现野指针
![](https://i-blog.csdnimg.cn/blog_migrate/52065ff6662d1f8a39019f06f99fe905.png)
3、引用可以修改返回值的值
引用和返回值公用一块空间,那么通过修改引用值,便可以使返回值随之改变
![](https://i-blog.csdnimg.cn/blog_migrate/c7dda602c33cc80c1cd4307decc00588.png)
有了引用,我们可以直接实现一个函数多个用途,一个SLAT()函数就可以自己对顺序表某个位置进行修改和运算,极大提高了效率
4、引用中的权限放大缩小问题
权限:
1、权限可以平移和缩小
2、权限不能放大
看下面的图便能更好的了解到权限问题
三、引用对效率的提升(总结)
1、避免复制:通过使用引用作为函数参数,可以避免将参数复制到新的变量中,从而节省了内存空间和时间开销。
2、减少指针的使用:引用可以起到类似指针的作用,但是相比于指针,引用更加简洁、易读,并且不需要进行解引用操作,这可以降低代码的复杂度和错误的可能性。
3、快速访问:引用可以提高程序的访问速度。因为引用是变量的别名,所以它们共享同一块内存地址,在访问时可以直接访问到原始数据,而不需要额外的寻址操作,这可以减少程序的运行时间。
最后,期待我们在下一篇博客见面!!!