我无法弄清楚为什么不打印NULL
#include "stdio.h"
#include "stddef.h"
typedef struct{
int info;
struct DEMO1* next;
} DEMO1;
int main()
{
int temp;
DEMO1 *head ;
if(head==NULL)
printf("NULL");
}
答案 0 :(得分:3)
分配时未初始化内存。在设置之前,您不能指望它具有特定值。
答案 1 :(得分:1)
你的问题是你没有将头指针初始化为任何值。它只包含之前存储的任何字节(除非操作系统很好并且做了一些清理)。如果您希望将if语句评估为true,则需要将头部初始化为NULL
:
int main()
{
DEMO1 *head = NULL;
if(head==NULL)
printf("NULL");
}
答案 2 :(得分:1)
这里的真实生活教训是,您的编译器可能会在初始化之前通知您head
已被使用。如果你没有看到这样的消息,那么要么你有一个相当差的编译器,要么你没有要求编译器警告你所有可能的问题。了解如何获得编译器能够提供的所有帮助,并且可以节省大量的编程时间。