c ++指针引用混乱

use*_*266 2 c++

    struct leaf
    {
        int data;
        leaf *l;
        leaf *r;
    };
    struct leaf *p;


void tree::findparent(int n,int &found,leaf *&parent)
Run Code Online (Sandbox Code Playgroud)

这是BST的一段代码.我想问一下.为什么

 leaf *&parent
Run Code Online (Sandbox Code Playgroud)

为什么我们需要"参考标记"?

父母也是一片叶子,为什么我不能用leaf* parent呢?

以下代码供您参考.谢谢!

void tree::findparent(int n,int &found,leaf *&parent)
{
    leaf *q;
    found=NO;
    parent=NULL;

    if(p==NULL)
        return;

    q=p;
    while(q!=NULL)
    {
        if(q->data==n)
        {
            found=YES;
            return;
        }
        if(q->data>n)
        {
            parent=q;
            q=q->l;
        }
        else
        {
            parent=q;
            q=q->r;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*web 7

要传递指针parent的引用,这样就可以修改指针:

parent=q;
Run Code Online (Sandbox Code Playgroud)

如果您通过值传递指针,则修改将是指向函数末尾过期的指针的副本.