使用链表时使用空指针

时间:2014-01-10 17:27:25

标签: c list pointers

我无法弄清楚为什么不打印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");
}

3 个答案:

答案 0 :(得分:3)

分配时未初始化内存。在设置之前,您不能指望它具有特定值。

答案 1 :(得分:1)

你的问题是你没有将头指针初始化为任何值。它只包含之前存储的任何字节(除非操作系统很好并且做了一些清理)。如果您希望将if语句评估为true,则需要将头部初始化为NULL

int main()
{
    DEMO1 *head = NULL;

    if(head==NULL)
        printf("NULL");
}

答案 2 :(得分:1)

这里的真实生活教训是,您的编译器可能会在初始化之前通知您head已被使用。如果你没有看到这样的消息,那么要么你有一个相当差的编译器,要么你没有要求编译器警告你所有可能的问题。了解如何获得编译器能够提供的所有帮助,并且可以节省大量的编程时间。