Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3759506
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: C/C++

2018-03-21 16:22:39

原文地址: NULL, 0, 空格与'0','' 作者:lvyilong316

NULL其实是一个宏,定义为0,#include 里是:
#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',空格(' ')就不会混淆为结束标志了,它们与普通字符没什么区别。
阅读(775) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~