Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3564626
  • 博文数量: 205
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7350
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-23 18:56
个人简介

将晦涩难懂的技术讲的通俗易懂

文章分类

全部博文(205)

文章存档

2024年(8)

2023年(9)

2022年(4)

2021年(12)

2020年(8)

2019年(18)

2018年(19)

2017年(9)

2016年(26)

2015年(18)

2014年(54)

2013年(20)

分类: C/C++

2014-04-07 11:17:14

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',空格(' ')就不会混淆为结束标志了,它们与普通字符没什么区别。
阅读(2400) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~