引用作为函数的参数有什么优缺点

如题所述

1、在函数调用过程中使用指针参数来传递数值,相比直接传递数值本身,能够带来时间和空间上节约。但是,使用指针有一些不便利的:第一,在函数中必须使用指针操作符“->”来操作指针参数;第二,调用函数时,必须通过地址操作符“&”来传递数值的地址。在C++中,引用能够避免上述烦琐的操作。当使用引用方式传递参数时,实参的地址能够自动传递到调用的函数当中,并且在函数当中使用引用参数时,地址又自动解引用为参数数值本身,函数中不需要使用指针操作符“->”。这些操作都由编译器自动完成,对程序员是透明的。
2、如果“函数参数有一个const float & a”,那么调用该函数时,参数值将自动转换为float类型,并类型float的临时变量地址传递到函数当中。因此,如果传递int、long以及char类型的变量时,程序能工作正常。如果传递double类型的变量,一旦该变量的数值超出float类型的数值范围,程序将工作失败。
另外,站长团上有产品团购,便宜有保证
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-31

使用引用传参的话,在函数中对该变量所做的修改,在函数返回后依然存在。这未必是程序员所希望的。

特点: 传入实参本身,不创建副本
好处: 传实参本身的好处

void swap(int &a, int &b)
{
int t = a;
a = b;
b = t;
}
确实可以交换两个变量
如果是
void swap(int a, int b)
{
int t = a;
a = b;
b = t;
}
传进去的是参数的拷贝,实参并没修改

2.不创建拷贝。可以很好的提升效率
如果参数是一个结构体或者类,很大,进行参数拷贝比较耗时,如果传引用就避免了这个过程

为了避免有时候不需要修改引用参数时对该参数误操作,可以加const做保护

本回答被网友采纳
第2个回答  2011-07-03
特点: 传入实参本身,不创建副本
好处: 传实参本身的好处

void swap(int &a, int &b)
{
int t = a;
a = b;
b = t;
}
确实可以交换两个变量
如果是
void swap(int a, int b)
{
int t = a;
a = b;
b = t;
}
传进去的是参数的拷贝,实参并没修改

2.不创建拷贝。可以很好的提升效率
如果参数是一个结构体或者类,很大,进行参数拷贝比较耗时,如果传引用就避免了这个过程

为了避免有时候不需要修改引用参数时对该参数误操作,可以加const做保护
第3个回答  推荐于2017-11-24
使用引用传参的话,在函数中对该变量所做的修改,在函数返回后依然存在。这未必是程序员所希望的。
使用引用传参,避免了变量复制的开销。比如参数如果是一个比较复杂的结构体,那么用引用就比直接传递来得好。本回答被提问者和网友采纳
相似回答