标题:函数形参里面,*和&如何选择
只看楼主
卖萌的0C
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-4-6
结帖率:0
已结贴  问题点数:20 回复次数:3 
函数形参里面,*和&如何选择
写代码的时候发现如果想要改变传入参数的值,我在函数形参那个地方,用*的话,在调用函数的时候使用传入实参的地址(&)就可以。我也可以在形参那个地方使用&,调用函数的时候直接传入实参也可以达到效果。那这两种方法怎么选择则呢,什么时候用*什么时候用&?
求各位大佬帮忙解答一下
搜索更多相关主题的帖子: 形参 函数 选择 调用 传入 
2022-04-06 10:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
两者是一样的,你喜欢用什么就用什么。但建议你使用“引用”

因为很多地方没法用指针,比如 重载自增运算符,比如 参数是个临时对象无法取地址,……
2022-04-06 12:04
卖萌的0C
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-4-6
得分:0 
回复 2楼 rjsp
好的,谢谢
2022-04-08 08:53
角动量
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2020-11-6
得分:0 
函数形参里面最优先使用的是&(引用)或者是const &(常量引用),对于这两个前者是你希望传入实参给这个函数时你所期望的是该函数修改该传入实参(不会产生拷贝和赋值操作),对于后者你希望该函数使用该实参但是并不想改变传入的实参则使用常量引用(常量引用也不会产生拷贝和赋值操作,使用值的副本)。对于指针*的话你希望的是该函数接受一个结构体或者指向一个函数来作为实参则使用指针实参void Compare(const string &str,function_point name);
:)
2022-04-14 08:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508792-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075886 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved