C:0x0,0,null,NULL,‘0‘,“0“,‘ ‘,“ “区别

C:0x0,0,null,NULL,‘0‘,“0“,‘ ‘,“ “区别0x0 仅仅是数字 0 d 输出 0 经常表示数字 0 null 不可识别的字符串 识别不了 NULL 经常表示空指针 未分配内存 也可以是数据库里面存的 NULL 值 指针变量 p 是空指针的判断 if p 0 if p

大家好,我是讯享网,很高兴认识大家。

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);
 

 

小讯
上一篇 2025-02-21 22:15
下一篇 2025-03-23 23:29

相关推荐

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