【发布时间】:2013-02-18 07:47:06
【问题描述】:
我在head_insert 的代码下方附加了在链表头部插入一个新节点。该函数以head_insert(head) 调用。
我不确定函数的第一个参数的语法,我期待的是NodePtr,因为它已经是一个指针,见下文。
为什么代码使用 NodePtr &head 而不是 NodePtr head 只是因为 head 已经是一个指针?
void head_insert(NodePtr & head, int the_number)
{
NodePtr temp_ptr;
temp_ptr=new Node;
temp_ptr->data=the_number;
temp_ptr->link=head;
head=temp_ptr;
}
struct Node
{
int data;
Node *link;
};
typedef Node* NodePtr;
【问题讨论】:
-
为什么代码只使用“NodePtr &head”而不是“NodePtr head”,因为 head 已经是一个指针?
-
不要同时使用 [c] 和 [c++] 标记问题。虽然 C++ 理解 C 代码,但在 C 中被认为是好的风格在 C++ 中很少是好的风格。
-
@saraMcKnight:那应该是编辑,而不是评论。
-
但是即使你通过每个值,head 也会改变,因为 head 持有头节点的地址
-
我已经编辑了我的问题