gpt4 book ai didi

c - 指向指针的头指针

转载 作者:行者123 更新时间:2023-12-01 16:02:30 28 4
gpt4 key购买 nike

我找到了这个链表例程(来自 Haviland 的 Unix System Programming),用于将项目添加到单链表。

additem(item **head, item *newitem)
{
newitem->next = *head;
*head = newitem;
}

我的困难在于试图理解 item **head 部分。 **head 的真正含义是什么?为什么不只用 item *head 定义例程,如下所示:

additem(item *head, item *newitem)
{
newitem->next = head;
head = newitem;
}

最佳答案

它是一个指向指针的指针。

在 C 中,您不能更改按值传递的变量,因为参数是作为局部变量处理的。您必须改为传递它们的指针,然后修改 *variable 的值。

当您要更改的变量已经是指针时,它也适用。在这种情况下,您必须将指针传递给该指针,因此当您更改此指针时,此更改会传播到调用方。

*headhead 指向的值。 headitem ** 类型,*headitem * 类型。

当你这样做时:

additem(item *head, item *newitem)
{
newitem->next = head;
head = newitem;
}

修改head 的值不会影响它对调用者的值(value)。出于所有目的,在此上下文中更改 head 是没有意义的。

关于c - 指向指针的头指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24878072/

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