下面的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
对象。