[英]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
指针的引用。 该函数使用new
给p
赋值,然后将其传递回调用它的任何代码。
即
readBinsaryTreee(x, ...)
// Now x will point the the binary tree created by the function `readBinaryTree`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.