您的位置:首页 > 编程语言 > C语言/C++

C++中null与0的区别

2014-04-02 11:14 232 查看
0是一个数字,本身有着一些原生的特性诸如:起始,没有,正负的分界线,0/1中的0还可以表示否定。

NULL用于将指针指定为空指针,也就是说该指针不指向任何对象,不可以对该指针进行解引用,否则系统会报错。

很巧合并且可能令人迷惑的是,在Windows环境下,NULL正好被定义为0,对于Windows程序,将指针初始化为0或NULL的作用是相同的,都使指针无效。这是因为Windows的内存管理将0x00000000地址设为无效内存,不允许代码对它进行读写。仅仅微软的一个定义,令不少人误以为NULL和0有着天生的紧密关系,这显然是一个历史的误区。

既然设计NULL是为了满足将指针规定为无效的逻辑上的功能,那么假如某个系统指定无效内存地址为0x20000000,那么基于这个系统的编译器就很有可能将NULL定义为0x20000000,这时0和NULL就不能等同了。

千万记住,0以及其他所有数字在编程中仅仅是一个常量,并不一定具有某一逻辑上的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: