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

来源:互联网 发布:考研英语网络间谍 编辑:程序博客网 时间:2024/05/19 13:26
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',空格(' ')就不会混淆为结束标志了,它们与普通字符没什么区别。
原创粉丝点击