NULL, 0, 空格与'0','\0'-阿里云开发者社区

开发者社区> 云计算> 正文

NULL, 0, 空格与'0','\0'

简介:
NULL其实是一个宏,定义为0,#include <stdio.h> 里是:
#ifndef NULL
#ifdef  __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif
  判断指针是否为空时,p==NULL, 或p==0是一样的意思,但习惯用NULL更好。
  后面的空格(' ')与'0','\0'主要是在字符串中容易混淆,可以通过ASCII码值来帮助区分:将所有的字符译为ASCII码值,
空格(' ')--->32
'0'-------->48
'\0'------->0
  C库里字符串的处理是按ASCII码值来处理的,例如以'\0'值结束,就是以0值结束,所以p是字符指针,p[i]='\0'与p[i]=0或p[i]=NULL都是一样的,都可以作为字符串结束标志。(memset(p, 0, N)与memset(p, '\0', N)与memset(p, NULL, N)都是一样的。)
  理解了这些,那么'0',空格(' ')就不会混淆为结束标志了,它们与普通字符没什么区别。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章