我见过并编写过传递更新对象引用参数的函数,因为我需要返回代码,或者需要在一个函数中更改多个变量。
现在我看到了如下所示的代码,我很难理解当函数签名是指针时如何/为什么将 bool 变量(位于代码片段底部)作为引用传递,并分配使用 *?
返回值这是如何运作的?我可以要求解释吗?我尝试谷歌指针参数等,但找不到此类问题的答案。
// header file
int fetchResult(bool* result_p, const Info& info, int section)
// implementation
int fetchResult(bool* result_p, const Info& info, int section)
{
…
*result_p = resultValue;
…
return 0;
}
// usage
bool result = false;
fetchResult(&result, info, section);
将函数参数作为引用或指针传递都允许函数写回参数(当不是
const
ofc 时),并允许多个返回值。
这两个调用的处理方式几乎相同,唯一的区别是引用不能为空,但指针可以为空。因此,通常首选使用引用调用,因为它可以节省一次 null 检查。
通过指针传递的作用是允许可选参数,因为调用者只需传递
nullptr
即可获得不需要的附加返回值。
当通过 const-ref 传递时(如您的示例中所示),该参数并不是作为返回值,而是作为输入值来避免复制(通常是出于性能原因)。