引用指针与通过引用传递

Reference to pointer vs Pass by reference?

本文关键字:引用 指针      更新时间:2023-10-16

下面的CodeA和CodeB有什么区别?:它们在语法上都是正确的,并且似乎两个代码都能够修改原始指针"head"。

如果我错了,请纠正我

代码A:(通过参考)

NodeType *head = new NodeType();
insertNode(*head, val);
void insertNode(NodeType &head, int val) {}

代码B:(指针参考)

NodeType *head = new NodeType();
insertNode(head, val);
void insertNode(NodeType *&head, int val) {}

编辑想补充一下,在什么情况下代码A更可取,反之亦然?

看来这两个代码都可以修改原来的指针"头"

错了。只有代码B才能修改head指针。代码A接收由head指向的NodeType对象,而不是指针。

什么情况下代码A更可取,反之亦然?

当函数只需要NodeType对象时,代码A是优选的。

当函数需要修改指针值时,最好使用代码B,例如将其更改为指向另一个NodeType对象。