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

hag*_*wal 0 c struct

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

typedef struct linkedList
{
    char* word;
    struct linkedList* next;
} linkedList; 
Run Code Online (Sandbox Code Playgroud)

现在,我声明了一个表示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
} 
Run Code Online (Sandbox Code Playgroud)

因此,我觉得我无法检查我的链表head是否已初始化或分配了一些内存.我无法检查,node->next因为它会导致分段错误错误并且node == NULL正在通过!

请注意:

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

请问任何想法.

Ant*_*onH 7

这是因为:

while(node != NULL);
Run Code Online (Sandbox Code Playgroud)

删除分号;.否则,在编译时,它不知道之间的块{...}是在while之后,并且将输入它,而不管中的验证while (...).

  • 编译时打开`-Wall`.然后你会得到一个警告,比如"while循环有空体". (4认同)