注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 

日志

 
 

NULL 、0、空指针的区别  

2014-10-06 10:45:20|  分类: 学习录 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


NULL 0、空指针

空指针,假设p被定义为一个指针,那么p=0p=0Lp=\0p=3-3p=0*3中的任意一个,p都是一个空指针,空指针就是不指向任何实际的对象或函数,在C/C++中,一般这样定义空指针:(void *)0  。这里CC++中又有些区别,C中没有重载函数等问题,用起来没有那么多的转换问题,所以可以直接定义空指针为(void *)0 ,但是在C++要比C严格,将(void *)0直接赋给一个指针是不合法的,但是可以直接将0赋给指针,表示这个指针是空指针,如下定义:

#IFDEF _cplusplus

#define NULL 0

#ELSE

#define NULL ((void *)0)

#ENDIF

从上可以看出,NULL是一个空指针的宏定义,所以大多数时候,可以用NULL来表示空指针,因此上文中队指针p赋值为空指针的写法,可以直接写为:

P = NULL;

在实际编程中,我们只需要知道一个指针是不是空指针即可,没有必要对空指针深层次的了解,可以用if语句:

if(p==NULL)

来判断。


NULL是标准库中定义的一个宏,而我们也可以把0当做NULL。说到这里,顺便说下数据库中的NULL


在C++中,为了使NULL、(void*)0不混淆使用,增加了nullptr,专门用于表示空指针。


数据库中的NULL表示只是表示这个字段没有数据,不等同于0和空字符串。比如一个字段的value设置为NULL,那表示这个值是未知的,还没有赋值;如果value设置为’’(空字符串),那表示这个值是不存在的。

输入SQL语句:

SELECT 0 IS NULL,0 IS NOT NULL,’’ IS NULL,’’ IS NOT NULL;

输出结果是:

 NULL 、0、空指针的区别 - mihooke - mihooke的博客

 
  评论这张
 
阅读(95)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017