头指针指向指针

用户名

我找到了这个链表例程(来自Haviland的Unix系统编程),可以将一个项目添加到单链表中。

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

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

*head该值head指向。虽然head是类型的item **,但是*head是类型的item *

执行此操作时:

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

修改的值head不会影响调用者的价值。出于所有目的,head在这种情况下进行更改毫无意义

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章