我正试图使用链表来积累我对C中指针的知识。所以,我写了一个小例子,但当我编译它时,我遇到了一个错误,我似乎无法理解:
In function 'append_node':
error: request for member ‘next’ in something not a structure or union
通过引用访问(或传递)结构的正确方法是什么?
#include <stdio.h>
#include <stdlib.h>
struct node {
int val;
struct node *next;
};
static int append_node(int val, struct node **head) {
struct node *new_node;
new_node = (struct node *) malloc(sizeof(struct node));
new_node->val = val;
new_node->next = NULL
*(head)->next = new;
return 0;
}
int main() {
int i;
struct node *head;
struct node *curr;
head = NULL;
curr = (struct node *) malloc(sizeof(struct node));
for(i = 1; i <= 10; i++) {
append_node(i, &curr);
head = curr;
}
curr = head;
while(curr) {
printf("%dn", curr->val);
curr = curr->next ;
}
return 0;
}
任何帮助都会很棒!
我能假设你在这一行得到错误吗?
*(head)->next = new;
我认为你需要做一个微不足道的改变:
(*head)->next = new;
由于head
是一个指向指针的指针,所以当您取消引用它时,您会得到一个指针。->next
对该指针进行操作。
两个问题:
末尾缺少;
new->next = NULL
并更改
*(head)->next = new;
至
(*head)->next = new;
试试这个:
(*head)->next = new_node;
将**head
转换为*head
,然后调用其上的成员。