C中的NULL比较错误

时间:2012-05-10 07:14:42

标签: c

你能说我在这做什么错吗?当我设置url = NULL然后比较它是否为NULL时,无论是if(strlen(url)!=0)还是if(url!=NULL)程序崩溃或中断。我知道这很简单,但我做错了。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void main()
{
    char* url="/v1.0/fafffsdf"  ;
    url=NULL;
    printf("%s\n",url);
    if(url!=0)
    {
        printf("It ain't NULL\n");
    }
    else
    {
        printf("It's NULL\n");
    }
}

1 个答案:

答案 0 :(得分:11)

崩溃在

printf("%s\n",url);

指针指向NULL并且您正在尝试从那里读取,有效地取消引用将生成segmentation faultNULL指针。

指向像

这样的空字符串
char *url = "";

是好的,与指向像

这样的NULL位置完全不同
char *url =NULL;

如果取消引用则很危险。

空字符串在内存中具有有效位置,可以取消引用。只是它没有任何内容可以期待\0