提问人:user2465084 提问时间:9/18/2023 更新时间:9/18/2023 访问量:253
将指针参数传递给函数?[复制]
passing a pointer parameter to a function? [duplicate]
问:
我已经看到并编写了引用更新对象传递参数的函数,因为我需要返回代码,或者我需要更改一个函数中的多个变量。
现在我看到如下所示的代码,我很难理解当函数签名是指针时如何/为什么将 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);
答:
-1赞
nick
9/18/2023
#1
将函数参数作为引用或指针传递既允许函数写回参数(当不是 ofc 时),又允许多个返回值。
这两个调用的处理方式几乎相同,唯一的区别是引用不能为 null,但指针可以为 null。因此,通常首选使用引用调用,因为它可以节省一次 null 检查。const
传递指针有时用于可选参数,因为调用方可以只传递一个不需要的额外返回值。nullptr
当通过 const-ref 传递时(如您的示例中),该参数不是作为返回值,而是作为避免复制的输入值(通常出于性能原因)。
评论
&
result
fetchResult
&result
&
&result
bool*
result
&
在 C++ 中有三种不同的含义,引用声明只是其中之一。您归零的 的这种特定用法不是引用声明。就像这里的用法不是乘法一样。欢迎使用 C++。&
*