编辑指针指向函数的位置

时间:2011-12-25 20:44:46

标签: c++ pointers reference struct

我在C ++中有一个指向struct对象的指针。

 node *d=head;

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

3 个答案:

答案 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"
}