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代码更可取的情况,反之亦然?
答案 0 :(得分:4)
似乎两个代码都能修改原始指针“head”
错误。只有代码B才能修改head
指针。代码A接收NodeType
指向的head
对象,而不是指针。
什么情况下代码A更可取,反之亦然?
当函数只需要一个NodeType
对象时,最好使用代码A.
当函数需要修改指针值时,例如代码B是优选的。将其更改为指向另一个NodeType
对象。