参数既是指针又是引用

Parameter both a pointer and reference?

本文关键字:引用 指针 参数      更新时间:2023-10-16

我正在检查一个赋值,我刚刚在一个头文件中发现了这个,我必须在.cpp:中填写它

void setData(const component_t * & data_ptr); // Copy the data from data_ptr to the internal buffer. 
//The function ASSUMES a proper size for the incomming data array.

如果您想了解component_t,那么它是typedef中的一个float。

所以,我的问题是,data_ptr是什么样的参数?如何用*和&(指针和引用?)。

感谢您的真知灼见!

参数data_ptr是指向const component_t的指针的引用。

在C和C++中,指针其实并不特别。它只是一个指向内存中某个地址的数字。通常,当您将T*作为参数传递时,您将按值传递;也就是说,表示内存地址的数字只是复制的,就像您按值传递int一样。

在这种情况下,您将传递一个T*&,或引用到插入到T。但它的工作方式与传递int&或对int的引用的方式大致相同:这意味着您可以更改被引用的对象。

所以在这种情况下,你可以说,例如

void setData(const component_t * & data_ptr)
{
    data_ptr = new component_t(/* args... */);
}

尽管这不一定是在现代C++中做事的好方法。