你能说我在这做什么错吗?当我设置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.