我在C ++中有一个指向struct对象的指针。
node *d=head;
我希望通过引用将该指针传递给函数并编辑它所指向的位置。我可以传递它,但它不会改变初始指针指向的地方,但只改变函数中的本地指针。函数的参数必须是指针对吗?之后如何更改它以显示同一结构的不同对象?
答案 0 :(得分:11)
您有两个基本选择:通过指针传递或通过引用传递。传递指针需要使用指向指针的指针:
void modify_pointer(node **p) {
*p = new_value;
}
modify_pointer(&d);
通过引用传递使用&
:
void modify_pointer(node *&p) {
p = new_value;
}
modify_pointer(d);
如果您将指针仅传递给node *d
,那么修改函数中的d
只会修改本地副本,如您所见。
答案 1 :(得分:3)
通过引用传递:
void foo(node*& headptr)
{
// change it
headptr = new node("bla");
// beware of memory leaks :)
}
答案 2 :(得分:1)
将node **
作为参数传递给您的函数:
// f1 :
node *d = head;
f2(&d);
// f2:
void f2(node **victim) {
//assign to "*victim"
}