C++:将指针变量传递给函数

Eri*_*son 2 c++ pointers

我有一个类Node:

class Node {
public:
    int item;
    Node * nextLink;
};
Run Code Online (Sandbox Code Playgroud)

在函数外部我声明了一个Node指针:

Node * newNode;
Run Code Online (Sandbox Code Playgroud)

然后,我将此指针传递给函数foo:

void foo(Node * node) {

  node = new Node();

  node->item = 1;

  Node * anotherNode = new Node();

  anotherNode->item = 2;

  node->nextLink = anotherNode; 
}
Run Code Online (Sandbox Code Playgroud)

实际通话:

foo(newNode);
Run Code Online (Sandbox Code Playgroud)

在foo结束时(但在现有之前),我可以看到node-> item和node-> nextLink指向正确的位置.但是,当从foo返回时,我检查newNode,并且该项是正确的,但nextLink不在那里.

有什么建议?谢谢

Jos*_*osh 5

您需要传递参考.您正在修改指针的副本

尝试

void foo(Node*& node) 
Run Code Online (Sandbox Code Playgroud)


Pra*_*ian 5

在其中,foo()您正在修改传递给函数的指针的本地副本。更改foo为以下内容:

void foo(Node ** node) {

  *node = new Node();

  (*node)->item = 1;

  Node * anotherNode = new Node();

  anotherNode->item = 2;

  (*node)->nextLink = anotherNode; 
}
Run Code Online (Sandbox Code Playgroud)

那么调用就变成:

foo( &newNode );
Run Code Online (Sandbox Code Playgroud)