参数类型void*&mean是什么以及它的用途是什么?

wwa*_*mmy 5 c++ pass-by-reference void-pointers boinc

我正在查看用C++编写的API,我对以下参数类型的含义感到困惑:

void*& data

这是否意味着用户会传入对void指针的引用?如果这是真的,有什么意义呢?我的意思是void*已经是间接的,那你为什么要再次重定向呢?

wkl*_*wkl 7

void *表示在C++中传递指针,意味着你传入一个指针,但它实际上是指针的副本.如果在函数中修改了此指针,比如更改其地址,则不会反映在传入的指针中.

将它与按引用传递相结合void *&意味着您将原始指针的别名传递给此函数.如果您修改它,比如更改其地址,它将反映在原始指针中.

  • @eplawless:引用不是指针的语法糖.它们通常使用指针实现,就是这样.例如,考虑不能重新引用引用,它们(语言方面)只是别名而不是单独的变量,并且它们可以用于延长临时的生命周期. (4认同)

Bil*_*rin 2

如果没有看到它的用途,很难说,但你指出引用是一种间接级别。如果它是一个指向指针的指针,你会觉得奇怪吗?这些很常见 - 事实上,您在接受命令行参数并获取指向 char 指针的指针时处理它们。另一个例子是,如果您正在使用存储桶创建哈希映射,并且希望能够将指针返回到启动存储桶的指针。

关键是有时您需要多层间接。确实,混合指针和引用可能很奇怪,但这是有充分理由的。一个常见的原因是 C++ 代码需要与 C api 交互。许多 POSIX 系统调用需要传入然后更改的 void 指针,因此所讨论的 C++ 函数可能充当该指针的包装器。