C中的NULL比较错误

the*_*ive 2 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Pav*_*ath 11

事故发生了

printf("%s\n",url);
Run Code Online (Sandbox Code Playgroud)

指针指向NULL并且您正尝试从那里读取,有效地取消引用NULL将生成分段错误的指针.

指向空字符串

char *url = "";
Run Code Online (Sandbox Code Playgroud)

是好的,与指向NULL位置完全不同

char *url =NULL;
Run Code Online (Sandbox Code Playgroud)

如果被解除引用则是危险的.

空字符串在内存中具有有效位置,可以取消引用.它只是它没有任何预期的东西\0.