NULL,'\0'区别解决思路
NULL,\0区别\0 的值是0NULL 在vc中也是0strlen(NULL) 程序会出错strlen(\0)不会问题2:C/C++ codech
NULL,'\0'区别
'\0' 的值是0
NULL 在vc中也是0
strlen(NULL) 程序会出错
strlen("\0'")不会
问题2:
C/C++ codechar * __cdecl strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ ) ; /* Copy src over dst */ return( dst );}
其中的while这句代码 编译器是怎么处理的
字面意思是:先赋值,然后++, cp++ ,strc++, 那个++再前呢? 哪个再后??
为什么赋值后,还会做一次,判断是否为'\0'呢??
[解决办法]'\0'是char不是0
NULL是常数0
[解决办法][解决办法]strlen(NULL) 程序会出错
答:因为你传递的NULL是地址0,引起非法地址访问
strlen("\0'")不会
答:"\0'" 这个字符串在编译链接以后,在程序中是有一块内存的,也就是有实际的存储空间,当然不会引起错误
总之,这两个问题不是同一性质的,一个的内存地址编号为0,一个是内存中的内容为“\0”
[解决办法]0不0的不是重点,重点是类型不一样
int的0 和int*的0都是0,但是意义不一样 一个是数值类型代表数值,一个是指针类型代表地址0