C语言--NULL和NUL

1、NULL
    标准定义了NULL指针,它作为一个特殊的指针变量,表示不指向任何东西。要使一个指针变量为NULL,你可以给它赋一个零值。为了测试一个指针变量是否是NULL,你可以将它与零值进行比较。
    对指针进行解引用操作可以获得它所指向的值。但从定义上来看,NULL指针并为指向任何东西,因此对一个NULL指针进行解引用操作时非法的。在对指针进行解引用操作之前,你首先必须确保它并非NULL指针。
    如果所有的指针变量(而不仅仅是位于静态内存中的指针变量)能够被自动初始化为NULL,那实在是一件幸运的事,但事实并非如此,不管你的编译器对解引用NULL指针这种行为作何反应,对所有的指针变量进行显示的初始化是一种好做法。如果你已经知道了指针将被初始化为什么地址,就把它初始化为该地址,否则就把它初始化为NULL。风格良好的程序会对指针解引用之前对他进行检查。
2、NUL
    NUL是ASCII字符集中第一个字符的名称,它对应于一个零值。C语言中没有NUL这样的预定义宏。注意:在ASCII字符集中,数字0对应于十进制值48,不要把数字0和'\0'(NUL)的值混同起来。
    字符串就是一串零个或多个字符,并且以一个位模式全0的NUL字节结尾。因此,字符串所包含的内部不能出现NUL字节,NUL字节是字符串的终止符,但它本身并不是字符串的一部分,所以字符串的长度并不包括NUL字节。
3、总结:
    一个‘L’的NUL用于结束一个ASCII字符串,
    两个‘L’的NULL用于表示什么也不指向(空指针)
    当然,如果出现了三个‘L’的NULLL,那就要检查一下有没有拼写错误了。ASCII字符中的’\0’被称为NUL。表示哪里也不指向的特殊的指针值则是NULL。这两个术语不可互换。

符号NULL在头文件stdio.h中定义,另一方面,并不存在预定义的符号NUL,所以如果你想使用它而不是字符常量'\0',你必须自行定义。
 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值