指针初始化时设置为0和NULL的区别?求高手解答~ 5
为什么要把指针设为NULL而不是0?为什么要把指针设为0不设为NULL?也就是说什么时候应该把指针设为0,什么时候把指针设为NULL?编写程序时,把指针设为有什么作用(意...
为什么要把指针设为NULL而不是0?为什么要把指针设为0不设为NULL?也就是说什么时候应该把指针设为0,什么时候把指针设为NULL?编写程序时,把指针设为有什么作用(意思)?
有个高手给了我一个答案,我觉得很不错,就分享出来和大家共享下~
是一个叫poseidon_k的朋友帮助我的,下面共享他的解释:
0是一个数字,本身有着一些原生的特性诸如:起始,没有,正负的分界线,0/1中的0还可以表示否定。
NULL用于将指针指定为空指针,也就是说该指针不指向任何对象,不可以对该指针进行解引用,否则系统会报错。
很巧合并且可能令人迷惑的是,在Windows环境下,NULL正好被定义为0,对于Windows程序,将指针初始化为0或NULL的作用是相同的,都使指针无效。这是因为Windows的内存管理将0x00000000地址设为无效内存,不允许代码对它进行读写。仅仅微软的一个定义,令不少人误以为NULL和0有着天生的紧密关系,这显然是一个历史的误区。
既然设计NULL是为了满足将指针规定为无效的逻辑上的功能,那么假如某个系统指定无效内存地址为0x20000000,那么基于这个系统的编译器就很有可能将NULL定义为0x20000000,这时0和NULL就不能等同了。
千万记住,0以及其他所有数字在编程中仅仅是一个常量,并不一定具有某一逻辑上的功能。 展开
有个高手给了我一个答案,我觉得很不错,就分享出来和大家共享下~
是一个叫poseidon_k的朋友帮助我的,下面共享他的解释:
0是一个数字,本身有着一些原生的特性诸如:起始,没有,正负的分界线,0/1中的0还可以表示否定。
NULL用于将指针指定为空指针,也就是说该指针不指向任何对象,不可以对该指针进行解引用,否则系统会报错。
很巧合并且可能令人迷惑的是,在Windows环境下,NULL正好被定义为0,对于Windows程序,将指针初始化为0或NULL的作用是相同的,都使指针无效。这是因为Windows的内存管理将0x00000000地址设为无效内存,不允许代码对它进行读写。仅仅微软的一个定义,令不少人误以为NULL和0有着天生的紧密关系,这显然是一个历史的误区。
既然设计NULL是为了满足将指针规定为无效的逻辑上的功能,那么假如某个系统指定无效内存地址为0x20000000,那么基于这个系统的编译器就很有可能将NULL定义为0x20000000,这时0和NULL就不能等同了。
千万记住,0以及其他所有数字在编程中仅仅是一个常量,并不一定具有某一逻辑上的功能。 展开
4个回答
展开全部
#define NULL 0
NULL即0
NULL即0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主要看你心情爽不爽而决定用哪个
NULL就是0,0就是NULL
叫你的学名也是叫,叫你的小名也是叫
两个为一区别就是NULL 比较专业一点,大多数编程语言都定义NULL为空的意思。
如果你写一个int * p = 0 你告诉我你定义的是NULL 谁知道了啊
NULL就是0,0就是NULL
叫你的学名也是叫,叫你的小名也是叫
两个为一区别就是NULL 比较专业一点,大多数编程语言都定义NULL为空的意思。
如果你写一个int * p = 0 你告诉我你定义的是NULL 谁知道了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |