我正在尝试制作链接列表。所以,我宣布了一个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
正在传递!!!
请注意:
head
是否已初始化或已分配了一些内存。我想使用我的链表数据结构来做到这一点。这是因为假设我运送我的数据结构,并希望如果某人试图删除某些内容而链接列表然后为空,则应打印/抛出一些意味着完整错误。请知道。
答案 0 :(得分:7)
因为这个原因:
while(node != NULL);
删除分号;
。否则,在编译时,它不会知道{...}
之间的阻止是在一段时间之后,并且无论while (...)
中的验证如何都会输入它。