编辑指针指向函数的位置

The*_* K. 5 c++ struct pointers reference

我有一个指向C++中的结构对象的指针.

 node *d=head;
Run Code Online (Sandbox Code Playgroud)

我想通过引用将该指针传递给函数并编辑它所指向的位置.我可以传递它,但它不会改变初始指针指向的地方,但只改变函数中的本地指针.函数的参数必须是指针对吗?之后如何更改它以显示同一结构的不同对象?

Gre*_*ill 11

您有两个基本选择:按指针传递或按引用传递.通过指针传递需要使用指向指针的指针:

void modify_pointer(node **p) {
    *p = new_value;
}

modify_pointer(&d);
Run Code Online (Sandbox Code Playgroud)

通过引用传递使用&:

void modify_pointer(node *&p) {
    p = new_value;
}

modify_pointer(d);
Run Code Online (Sandbox Code Playgroud)

如果将指针作为公正传递node *d,则d在函数内修改将仅修改本地副本,如您所观察到的那样.