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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值