gpt4 book ai didi

c++ - 链表,指针操作

转载 作者:搜寻专家 更新时间:2023-10-31 01:11:25 31 4
gpt4 key购买 nike

我在下面附加了 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;

最佳答案

why the code uses "NodePtr &head" and not "NodePtr head" only as head is already a pointer?

原因是它需要函数对 head 所做的任何更改才能对调用者可见。

如果 head 是按值传递的 (NodePtr head) 而不是按引用传递 (NodePtr& head),情况就不是这样了:当函数将 temp_ptr 分配给 head 时,此更改不会传播回调用方。通过引用传递 head 解决了这个问题。

关于c++ - 链表,指针操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14931572/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com