引用指针vs按引用传递?

时间:2016-05-07 15:42:11

标签: c++ pointers reference

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代码更可取的情况,反之亦然?

1 个答案:

答案 0 :(得分:4)

  

似乎两个代码都能修改原始指针“head”

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

  

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

当函数只需要一个NodeType对象时,最好使用代码A.

当函数需要修改指针值时,例如代码B是优选的。将其更改为指向另一个NodeType对象。