引用和指针的作为参数的区别

今天学习c++的时候顺便复习了一下引用和指针的知识,记录一下二者的在作为参数时区别和概念。

引用在c语言中本质上是将另一个变量起了一个新名字,而对引用进行的任何操作就是对被引用的那个变量操作。引用是将变量和引用绑定在一起,所以引用在定义的时候必须要被初始化。 如果是常引用的话就不能在定义初始化之后改变数值了。

int a=10;
int &b=a;
b = 5;
const int &c = a;
c=1;  --错误,因为c是常引用固定值无,固定为10

看起来引用和指针类似,功能似乎也相同,二者都实现了对其他对象间接访问。但是二者的区别也是很明显。首先来记录一下引用的应用,理论知识学的再多不如看一看具体应用消化的快。

引用的一个重要作用就是用来做函数的参数,大家可能会觉得那不是指针一样嘛都是用来做参数,哪怕简单的值传递的参数不也一样。但是引用相对于另外两种方法本质上的区别是他不需要开辟形参内存空间,因为形参变量其实是实参副本,是需要另外开辟内存来存储的。
**1.**而普通的值类型传参则是完全复制了一个与值类型内存大小一致的副本来传参;
**2.**而指针的优点相当于升级版本,只需要传递指针作为形参开辟空间,那么相对于第一种值类型传参它需要开辟的内存就很小了,例如参数不仅仅是几个变量而是一堆变量甚至一堆对象那还需要每个对象开辟内存的时候走一遍构造函数,那么值传递显然是没有指针高效的。
**3.**那么有没有比指针更优秀的传参方法呢?答案是有的,那就是引用,因为刚刚提到引用其实就是变量的另一个名字,所以他在传参的时候是直接将要操作的变量参数作为形参传入。它避免了开辟新的存储单元来存储形参。相对于指针还需要一个物理地址来作为形参存储单元,引用则是把自己送入函数中去,没有任何中间商赚差价~真正的良心参数啊!而且指针传参相对于引用的程序书写和代码可读性要低效很多。真正的物美价廉!童叟无欺!
而常量引用则是起到了保护数据的作用,看具体情况使用吧,有机会再记录一下const的概念。

猜你喜欢

转载自blog.csdn.net/weixin_50746193/article/details/124067774