0x0:仅仅是数字0,%d输出
0 :经常表示数字0
null :不可识别的字符串,识别不了
NULL : 经常表示空指针,未分配内存,也可以是数据库里面存的NULL值。
指针变量 p 是空指针的判断: if ( p == 0 ) if ( p == '\0' ) if ( p == 3 - 3 ) if ( p == NULL ) /* 使用 NULL 必须包含相应的标准库的头文件 */ if ( NULL == p ) if ( !p ) if ( p == q ) ... 指针变量 p 不是空指针的判断: if ( p != 0 ) if ( p != '\0' ) if ( p != 3 - 3 ) if ( p != NULL ) /* 使用 NULL 必须包含相应的标准库的头文件 */ if ( NULL != p ) if ( p ) if ( p != q )
讯享网
\0 :非法转义字符,识别不了
‘\0’ : 字符串结束标记。
'0' :字符0,ASCII码48
"0" :字符串0,几乎没有什么作用
"" :空字符串,分配了内存,分配了一个空间
" " :含有空格的字符串,几乎不用。长度为一字节,但占用2字节空间。内存为"空格\0"
'' :空字符常量,有的编译器无法输出。有的输出%c空格,%d输出0,空字符码值是0
' ':含有空格的字符常量,%c输出空格,%d输出空格的ASCII码32
注意:
1.0 NULL ‘\0’ 其实是一样的东西都代表ASCII第一个元素。
%c 输出时,不同编译器显示不同,显示空;%d输出为0。但是它们的实质并不相同,NULL用于指针和对象,0是指数值,‘\0’用于字符串的结束。
在不同的系统中,NULL并非总是和0等同,NULL仅仅代表空值,也就是指向一个不被使用的地址,在大多数系统中,都将0作为不被使用的地址,所以就有了类似这样的定义:#define NULL 0 。 但并非总是如此,也有些系统不将0地址作为NULL,而是用其他的地址,所以说,千万别将NULL和0等价起来,特别是在一些跨平台的代码中,这更是将给你带来灾难。
讯享网int *p=NULL; int *p='\0'; int *p=0;
2.字符永远只有一个字节,字符串切记 以 ‘\0’ 结束,字符串长度不包括 ‘\0’ 这个结束标志。如字符串 “pretty”长度为6字节,但占用内存 7字节。
3.空指针常量?
(一个表示0值的 整数常量,叫做空指针常量)
解释: 0、0L 、3 - 3(它们都是“integer constant expression”整数常量 表达式 )以及 (void*)0 等都是空指针常量(注意 (char*) 0 不叫空指针常量,只是一个空指针值)。至于系统选取哪种形式作为空指针常量使用,则是实现相关的。一般的 C 系统选择 (void*)0 或者 0 的居多(也有个别的选择 0L);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/127497.html