下面的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接收NodeType指向的head对象,而不是指针。



当函数仅需要NodeType对象时,代码A是更可取的。

当函数需要修改指针值时,例如代码B是可取的。更改它以指向另一个NodeType对象。

10-06 14:20