C语言 int * p; p=NULL;

1.为什么不写p=0;?2.为什么有的人还要#defineNULL0;?3.有这个必要吗?(*p还是不能赋值)... 1.为什么不写p=0;?
2.为什么有的人还要#define NULL 0;?
3.有这个必要吗?(*p还是不能赋值)
展开
 我来答
临怀
推荐于2017-09-07 · TA获得超过5838个赞
知道大有可为答主
回答量:2134
采纳率:16%
帮助的人:2120万
展开全部
1. 写0也可以,但是写NULL看起来更清楚
2. stdlib.h中已经定义了NULL,没必要再写
3. 有必要。如果不给p赋值NULL,那么p的值是undefined, 不一定是多少,有可能指向已经使用的内存。这时候如果给*p赋值,可能会造成破坏。如果p=NULL,就不可能给*p赋值,减少误操作的机会。
492924696lin
2013-04-26 · TA获得超过220个赞
知道小有建树答主
回答量:321
采纳率:0%
帮助的人:182万
展开全部
1:0和NULL不一样,0可以只数字0,也可以指字符0,NULL指的是空。
2:p=NULL;这一句的意思就是令P指向空地址
3:如果最后不写p=NULL;的话就要释放p.像这样free(p);,不这么做的话就有可能出现指针乱跳转的危险
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
平生居
2013-04-26 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:82
采纳率:0%
帮助的人:96.9万
展开全部
关于无效值在不同的环境有不同的定义,大多是0,而有的是0xFFFFFFFF,
编译代码换了环境后而通过宏定义NULL,在利用NULL的代码中就不用再修改,而是直接修改宏定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunshine1517
2013-04-26
知道答主
回答量:1
采纳率:0%
帮助的人:1509
展开全部
这是指针啊,如果是直接将0赋值给p也可以直接写int p;p=0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83cdc1c
2013-04-26 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:853万
展开全部
1. 这是习惯写法。一般都把NULL定义成(void *)0,如果直接p=0;编译器会告警,说把一个整型赋给一个指针型。

2. NULL一般都用于表示空指针,p=NULL就表示把p指向一个无效空间地址
3. p指向NULL的无效空间地址后,对这个地址赋值就是非法的。只有把p指向一个有效地址空间才可以对它指向的内存写入内容,即可执行*p=XX操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式