C++ 参数是指针还是引用?

C++ 参数是指针还是引用?,c++,pointers,parameters,reference,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. 如果您想知道组件,它是一个通过typedef的浮点 所以,我的问题是,数据是

我正在签一份作业,我刚刚在一个头文件中找到了它,我必须在.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.
如果您想知道组件,它是一个通过typedef的浮点

所以,我的问题是,数据是什么样的参数?它如何由*和&(指针和引用)来定义


谢谢你的见解

参数
data\u ptr
是指向
const组件的指针的引用

<>在C和C++中,指针不是很特殊。它只是一个指向内存中地址的数字。通常,当您将
T*
作为参数传递时,您传递的是值;也就是说,表示内存地址的数字刚刚被复制,这与通过值传递
int
相同

在本例中,您正在传递一个
T*&
,或一个指向T的引用。但其工作方式与传递一个
int&
,或一个指向
int
的引用的方式大致相同:这意味着您可以更改引用的对象

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

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

尽管这不是现代C++中的一个好方法。

< P>参数>代码> DATAYPTR < /C> >是指向一个指针的引用。 <>在C和C++中,指针不是很特殊。它只是一个指向内存中地址的数字。通常,当您将
T*
作为参数传递时,您传递的是值;也就是说,表示内存地址的数字刚刚被复制,这与通过值传递
int
相同

在本例中,您正在传递一个
T*&
,或一个指向T的引用。但其工作方式与传递一个
int&
,或一个指向
int
的引用的方式大致相同:这意味着您可以更改引用的对象

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

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

虽然这不是现代C++中的一个好方法。

它是指针的引用。请参见此处:它是对指针的引用。看这里:谢谢你。我会用一根十英尺长的杆子来测量距离,并远离它;)但是,有没有一个地方是这样的:如果没有它,我们就不能做任何事情,这是特别有用的?@sjsam
intreadint(char*&bufp){int x=*bufp++;x感谢特里斯坦。感谢你。回答和澄清得很好,特里斯坦。非常感谢。谢谢你。我会用一根十英尺长的杆子来测量距离,远离它;)但是有没有一个地方特别有用,没有它我们就不能做事情?@sjsam
int readint(char*&bufp){int x=*bufp++;x谢谢Tristan。感谢您。Tristan的回答和澄清非常好。非常感谢您,朋友。:)