检查struct是否已初始化或已分配一些内存

时间:2016-01-26 22:08:48

标签: c struct

我正在尝试制作链接列表。所以,我宣布了一个LL数据结构如下:

typedef struct linkedList
{
    char* word;
    struct linkedList* next;
} linkedList; 

现在,我将一个表示LL头部的全局变量声明为linkedList* head = NULL;

现在,我很惊讶即使我为指针指定了一个NULL值,我也可以进入下面的while循环。

linkedList* node = head;
while(node != NULL);
{
  //Why I am here when I have not yet malloc'ed head and through global variable initialization my head is NULL
} 

因此我感觉我无法检查我的链表head是否已初始化或已分配了一些内存。我无法与node->next核对,因为它会导致细分错误并且node == NULL正在传递!!!

请注意

  1. 问题严格来说是C语言
  2. 我不希望有其他全局变量来跟踪我的链接列表head是否已初始化或已分配了一些内存。我想使用我的链表数据结构来做到这一点。这是因为假设我运送我的数据结构,并希望如果某人试图删除某些内容而链接列表然后为空,则应打印/抛出一些意味着完整错误。
  3. 请知道。

1 个答案:

答案 0 :(得分:7)

因为这个原因:

while(node != NULL);

删除分号;。否则,在编译时,它不会知道{...}之间的阻止是在一段时间之后,并且无论while (...)中的验证如何都会输入它。