我正在使用'->',但输出仍在询问我是否要使用'->'

时间:2019-10-30 03:03:39

标签: c pointers double-pointer

我正在尝试在C语言中创建单链接列表的功能,但是在访问Head节点的下一个节点时遇到问题。

typedef struct node {
  struct node *next;
} Node;

int foo(Node **head){
  *head = *head->next;
}

运行此代码时,我希望它会将我的头节点指针的地址更改为下一个节点,但是相反,我收到以下错误:

‘*head’ is a pointer; did you mean to use ‘->’?
     *head = *head->next;

1 个答案:

答案 0 :(得分:2)

foo中的行应该是

     *head = (*head)->next

因为'->'的优先级高于*

您可以在此处(https://en.cppreference.com/w/cpp/language/operator_precedence)了解更多有关运算符优先级的信息