C++ 指向引用参数的指针
可能重复:C++ 指向引用参数的指针,c++,C++,可能重复: 我现在正在看别人的代码,看到了一个不寻常的(至少对我来说)函数声明语法。下面是有效的C++语法吗?< /P> bool Foo::Bar(Frame *&ptoframe, int msToBlock) { .... } 我认为开发人员试图声明指向引用的指针 感谢您的帮助否,第一个函数参数是指针的引用。有时候你想改变别人的指针。。。也就是说: void change_my_char(char & c) { c = 'x'; } void p
我现在正在看别人的代码,看到了一个不寻常的(至少对我来说)函数声明语法。下面是有效的C++语法吗?< /P>
bool Foo::Bar(Frame *&ptoframe, int msToBlock)
{
....
}
我认为开发人员试图声明指向引用的指针
感谢您的帮助否,第一个函数参数是指针的引用。有时候你想改变别人的指针。。。也就是说:
void change_my_char(char & c) { c = 'x'; }
void pimp_my_pointer(void * & p) { p = nullptr; }
int main() {
char x;
void * y;
change_my_char(x);
pimp_my_pointer(y);
}
是的,它是有效的。从右到左阅读语法:它是指针的读引用。如果希望更改传递给函数的指针,这一点很重要。指针与任何其他参数一样,通过引用有效地传递 这里有一个很好的例子:
void no_change(int * ptr) {
ptr = 0;
}
void change_ptr(int *& ptr) {
ptr = 0;
}
int main() {
int *x;
change_ptr(x);
}
传递到change\u ptr
的任何指针的值都将被更改,因为我们通过引用传递它
但是,请注意,指针指向的对象的值仍然可以通过
no_change
功能更改(即*ptr=new int
)。此语法仅应用于实际指针,而不是其指向的对象 它是通过引用传递的指针。这允许被调用方更改调用方指针的值。查找螺旋规则。它大大有助于读取类型声明。事实上,这是对指针的引用。类型是从右到左读取的。我把pimp_我的指针
读为p-imp我的指针
(如在p-impl中)?@chris:它可能很有个性,所以不要觉得太糟糕:-)你是说从右到左而不是从左到右。谢谢。:)