参数指针和引用?

时间:2015-11-27 02:34:36

标签: c++ pointers parameters reference

我正在查看作业,我刚刚在头文件中找到了这个,我必须在.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 的浮动。

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

感谢您的见解!

1 个答案:

答案 0 :(得分:4)

参数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 ++中做事的好方法。