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



我试图通过编写链表来自学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

相关内容

  • 没有找到相关文章

最新更新