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:它可能很有个性,所以不要觉得太糟糕:-)你是说从右到左而不是从左到右。谢谢。:)