与C中的指针混淆

时间:2013-12-04 18:29:04

标签: c

我在C中写了删除功能,删除整个链表。功能的定义是

void delete(LIST **head)
{
  if(head)
    {
      delete(head->next);
      free(head);
      *head=NULL;
    }
}

编译时我收到错误:请求成员next的东西不是结构或联合。
结构是

typedef struct node{
    int data;
    struct node *next;
}; 

1 个答案:

答案 0 :(得分:4)

head是指向LIST指针的指针。您需要取消引用它 - *head - 才能获得LIST*来操作

void delete(LIST **head)
{
    if(*head)
    {
        delete(&(*head)->next);
        free(*head);
        *head=NULL;
    }
}