C++ '/0' NULL 和 0的区别

今天遇到一个以前都没注意过的问题,如下程序:
          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<<endl;
   if(a==0)
   cout<<"a值为0"<<endl;
   if(a==' ')
    cout<<"a是空格"<<endl;;
   cout<<"*"<<a<<"*"<<endl;          
总算找到答案了,while('/0')相当于while(0)(作为条件语句的表达式会自动转换成bool型)...,

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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值