参数既是指针又是引用?
Parameter both a pointer and 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是个什么样的参数?它怎么能同时被*和&定义(既是指针又是引用?)。
感谢您的见解!
参数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++ 中做事的好方法。
我正在检查一个作业,我刚刚在一个头文件中找到了它,我必须在 .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是个什么样的参数?它怎么能同时被*和&定义(既是指针又是引用?)。
感谢您的见解!
参数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++ 中做事的好方法。