指针初始化时设置为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以及其他所有数字在编程中仅仅是一个常量,并不一定具有某一逻辑上的功能。
展开
 我来答
扎山尘座索礼21
推荐于2017-11-25 · TA获得超过2000个赞
知道小有建树答主
回答量:540
采纳率:100%
帮助的人:184万
展开全部
呃,你可以这样理解,NULL 是关键字,如果将指针的值设置为null,即代表当前指针为空指针,其不指向内存中的任意地址,而当指针设置为0时,其实质是在内存中申请一片空间,将0放入,然后将0的内存地址赋给指针,指针使用前都要初始化,而许多程序员在申明指针或者初始化时都喜欢赋值null,这是良好的编程习惯,因为如果你不给指针初始化,指针会随机的指向内存中的任何一个地址,这就是俗称的“指针指飘了”,在现在的计算机系统中是没什么的,但是早期的计算机系统中轻则内存泄漏,重则系统崩溃(现在的操作系统一般都会由系统或者编译器报错的),如果还不明白,请继续追问,谢谢
百度网友488cfd9
2018-12-15
知道答主
回答量:2
采纳率:0%
帮助的人:1695
展开全部

在编译器中  NULL被宏定义为指向一个0的地址

也就是说  初始化为NULL 表示 指向一个地址  只不过这个地址是空的 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兔子和小强
2012-09-04 · TA获得超过6945个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1371万
展开全部
#define NULL 0
NULL即0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yakun
2012-09-04 · TA获得超过419个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:283万
展开全部
主要看你心情爽不爽而决定用哪个
NULL就是0,0就是NULL
叫你的学名也是叫,叫你的小名也是叫
两个为一区别就是NULL 比较专业一点,大多数编程语言都定义NULL为空的意思。
如果你写一个int * p = 0 你告诉我你定义的是NULL 谁知道了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式