Chinaunix首页 | 论坛 | 博客
  • 博客访问: 250034
  • 博文数量: 78
  • 博客积分: 1465
  • 博客等级: 上尉
  • 技术积分: 972
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-28 13:46
文章分类

全部博文(78)

文章存档

2012年(1)

2011年(9)

2010年(68)

我的朋友

分类: C/C++

2010-06-09 21:23:24

C++ '\0' NULL 和 0的区别
2009-11-14 10:44

今天遇到一个以前都没注意过的问题,如下程序:
          const char *cp = "some value";
          while (*cp) {                             
              // do something to *cp
              ++cp;
          }
当*cp指向'\0',一直搞不清,为什么此时程序会停止。在此之前,我一直认为'\0'就是空格。因为有用程序测试过'\0',输出结果是个空格。所以开始查资料,发现自己原来的想法错了

'\0'的ASCII码为0,在C++又叫null character, 输出结果是一个类似空格的,没有信息.但不是空格;

于是测试如下:
    char a='\0';
    cout<<(int)a<    if(a==0)
    cout<<"a值为0"<    if(a==' ')
     cout<<"a是空格"<    cout<<"*"<总算找到答案了,while('\0')相当于while(0)(作为条件语句的表达式会自动转换成bool型)...,

而NULL就比较没什么问题了,直接用VS (go to definition)就可以看到了结果了,就是0,(void*)0;所以当int *p=0时,即初始一个空对象时,0强制转换为(int*) 0

所以C++程序员更习惯用0来初始化一个指针变量,而不是像C程序员用NULL。

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

上一篇:C++的11个注意要点

下一篇:c++笔试题汇总

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