gpt4 book ai didi

c - 为什么我从这段代码中得到 "request for member in something not a struct or union"?

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:50 25 4
gpt4 key购买 nike

我正在尝试通过编写链表来自学 C。我是指针和内存管理的新手,我有点困惑。我有这段代码:

/* Remove a node from the list and rejiggle the pointers */
void rm_node(struct node **listP, int index) {
struct node *prev;
struct node *n = *listP;
if (index == 0) {
*listP = *listP->next;
free(n);
return;
}
for (index; index > 0; index--) {
n = n->next;
if (index == 2) {
prev = n;
}
}
prev->next = n->next;
free(n);
}

从列表中删除一个元素。如果我想删除第一个节点,我仍然需要一些引用列表的方法,这就是为什么 listP arg 是一个双指针,所以它可以指向列表的第一个元素并且请允许我释放曾经是头的节点。但是,当我尝试取消引用 listP 以访问指向下一个节点的指针时,编译器告诉我 error: request for member ‘next’ in something not a structure or union
。我在这里做错了什么?我想我可能无可救药地混淆了..?

最佳答案

这个:

*listP->next

与此相同:

*(listP->next)

你想要这个:

(*listP)->next

关于c - 为什么我从这段代码中得到 "request for member in something not a struct or union"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10994957/

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