繁体   English   中英

取消引用函数参数中的引用

[英]Dereferencing a reference in a function argument

在以下网站中:

链接

他们讨论了如何反序列化二叉树。 我可以成功实现所描述的方法,但是我对为什么该函数的第一个参数/参数感到困惑:

void readBinaryTree(BinaryTree *&p, ifstream &fin)

被写为BinaryTree *&p 更具体地说,我不明白为什么我们必须取消对p的引用。 任何澄清将不胜感激。

如果要重写该函数,它看起来像这样吗?

void readBinaryTree(BinaryTree &p, ifstream &fin) {
  int token;
  bool isNumber;
  if (!readNextToken(token, fin, isNumber)) 
    return;
  if (isNumber) {
    p = new BinaryTree(token);
    readBinaryTree(p.left, fin);
    readBinaryTree(p.right, fin);
  }
}

这个对吗?

void readBinaryTree(BinaryTree *&p, ifstream &fin)

在这里, p是对指针的引用(内存中现有的指针指向BinaryTree ),而不是BinaryTree本身的引用。 如果不使用&运算符,则在调用函数时,将按值传递指针p (复制指针)。

参数p是对BinaryTree指针的引用。 该函数使用newp赋值,然后将其传递回调用它的任何代码。

readBinsaryTreee(x, ...)
// Now x will point the the binary tree created by the function `readBinaryTree`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM