引用作为函数的参数有什么优缺点
4个回答
2011-07-05
展开全部
1、在函数调用过程中使用指针参数来传递数值,相比直接传递数值本身,能够带来时间和空间上节约。但是,使用指针有一些不便利的:第一,在函数中必须使用指针操作符“->”来操作指针参数;第二,调用函数时,必须通过地址操作符“&”来传递数值的地址。在C++中,引用能够避免上述烦琐的操作。当使用引用方式传递参数时,实参的地址能够自动传递到调用的函数当中,并且在函数当中使用引用参数时,地址又自动解引用为参数数值本身,函数中不需要使用指针操作符“->”。这些操作都由编译器自动完成,对程序员是透明的。
2、如果“函数参数有一个const float & a”,那么调用该函数时,参数值将自动转换为float类型,并类型float的临时变量地址传递到函数当中。因此,如果传递int、long以及char类型的变量时,程序能工作正常。如果传递double类型的变量,一旦该变量的数值超出float类型的数值范围,程序将工作失败。
另外,站长团上有产品团购,便宜有保证
2、如果“函数参数有一个const float & a”,那么调用该函数时,参数值将自动转换为float类型,并类型float的临时变量地址传递到函数当中。因此,如果传递int、long以及char类型的变量时,程序能工作正常。如果传递double类型的变量,一旦该变量的数值超出float类型的数值范围,程序将工作失败。
另外,站长团上有产品团购,便宜有保证
展开全部
使用引用传参的话,在函数中对该变量所做的修改,在函数返回后依然存在。这未必是程序员所希望的。
特点: 传入实参本身,不创建副本
好处: 传实参本身的好处
如
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做保护
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
特点: 传入实参本身,不创建副本
好处: 传实参本身的好处
如
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做保护
好处: 传实参本身的好处
如
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做保护
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用引用传参的话,在函数中对该变量所做的修改,在函数返回后依然存在。这未必是程序员所希望的。
使用引用传参,避免了变量复制的开销。比如参数如果是一个比较复杂的结构体,那么用引用就比直接传递来得好。
使用引用传参,避免了变量复制的开销。比如参数如果是一个比较复杂的结构体,那么用引用就比直接传递来得好。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询