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");
}
}
答案 0 :(得分:11)
崩溃在
printf("%s\n",url);
指针指向NULL
并且您正在尝试从那里读取,有效地取消引用将生成segmentation fault的NULL
指针。
指向像
这样的空字符串char *url = "";
是好的,与指向像
这样的NULL位置完全不同char *url =NULL;
如果取消引用则很危险。
空字符串在内存中具有有效位置,可以取消引用。只是它没有任何内容可以期待\0
。