Chinaunix首页 | 论坛 | 博客
  • 博客访问: 708635
  • 博文数量: 161
  • 博客积分: 2998
  • 博客等级: 少校
  • 技术积分: 1697
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-28 09:39
文章分类

全部博文(161)

文章存档

2012年(6)

2011年(120)

2010年(35)

分类: LINUX

2011-04-15 22:52:33

/0表示的是字符串的结尾,ASCII的值是0,但是注意的是这事字符串的结尾,like a,b,c这样的,虽然也是对应于ASCII,但并不是0这样一个特别的数字,所以当一个字符数组的一个成员在此为0,那么在strlen时在此就停止,所以0是一个数字对应ASCII/0仅此而已。
0的ASCII是48 nul是0 所以nul是字符串结尾
NULL被大量定义在标准头文件中,0是一个整型常量,'\0'是一个字符常量,而NUL是一个字符常量的名字。这几个术语都不可互换。

1、NULL用于表示什么也不指向,也就是空指针((void *)0)

2、0可以被用于任何地方,它是表示各种类型零值的符号并且编译器会挑出它

3、'\0'应该只被用于结束字符串

4、NUL没有被定义于C和C++,它不应该被使用除非你自己定义它,像:#define nul '\0'

C/C++中'\0'作为字符串结束标志使用,具有唯一性,与'0'是有区别的。
在网络编程中的字符数组一般初始化为'\0'串,如:
char url[256] = {'\0'}; 
这样在对获取的字符串进行处理时就方便些。

测试程序:

#include
using namespace std;

int main()
{
    char a = '0';
    char b = '\0';
    cout << a << "," << b << "," << boolalpha << (a==b) << endl;


//输出:0, ,false

    int i = 0;
    int j = '\0';
    cout << i << "," << j << "," << boolalpha << (i==j) << endl;

//输出:0,0,true

    return 0;
}

阅读(10756) | 评论(0) | 转发(0) |
0

上一篇:inode 设备文件

下一篇:内存对齐的理解

给主人留下些什么吧!~~