如何理解C++中的NULL?

Tree*t;t=newTree();deletet;if(t){cout<<"yes"<<endl;}为什么输出是yes?Tree*t;t=newTree();dele... Tree *t;
t = new Tree();
delete t;
if(t) {
cout << "yes" << endl;
}
为什么输出是yes?
Tree *t;
t = new Tree();
delete t;
if(t == NULL) {
cout << "yes" << endl;
}
则什么都不输出,我原来以为if(t)和if(t == NULL)是一样的。求指导。
展开
 我来答
箬竺1
高粉答主

推荐于2018-04-12 · 说的都是干货,快来关注
知道大有可为答主
回答量:3230
采纳率:93%
帮助的人:658万
展开全部
  作为一种风格, 很多人不愿意在程序中到处出现未加修饰的0。因此定义了预处理宏NULL (在和其它几个头文件中) 为空指针常数, 通常是0 或者((void *)0) 。希望区别整数0 和空指针0 的人可以在需要空指针的地方使用NULL。
  使用NULL 只是一种风格习惯。预处理器把所有的NULL 都还原回0, 而编译还是依照上文的描述处理指针上下文的0。特别是, 在函数调用的参数里, NULL之前(正如在0 之前) 的类型转换还是需要。
  NULL 只能用作指针常数。
fox000002
2012-10-16 · TA获得超过3833个赞
知道大有可为答主
回答量:2356
采纳率:97%
帮助的人:1375万
展开全部
这里的 NULL 其实就是空指针,值的话就是0

因为继承C的缘故,可以用来作为判断条件,0为假,其他值为真

delete 后 t 并没有重新赋值,保存的是原来的内存地址,自然不是0,也就不等于 NULL
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
气势上不能输
推荐于2016-02-17 · TA获得超过588个赞
知道答主
回答量:97
采纳率:0%
帮助的人:92.3万
展开全部
delete t 之后。t为野指针,指向一个你不能用的内存,并非是空指针(NULL)。
通常delete t后要跟一句t = NULL; 防止野指针的错误使用

delete只是删除t指向的内容
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七星瓢壳虫
2015-08-30 · 技术型,专业知识,学习内容。
七星瓢壳虫
采纳数:26 获赞数:153

向TA提问 私信TA
展开全部
NULL是0的意思,定义一个数等于NULL,就是让这个数等于0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hjthjthjt1992
2015-07-30 · TA获得超过277个赞
知道答主
回答量:30
采纳率:100%
帮助的人:15.5万
展开全部
NULL是C语言发明的东西,在C里面null就是0,这样说很明白吧

在C++里面null仍然有效,但不再是0,0就是0,null就是null,通常很少使用null了,null表示当前指针没有指向任何位置,即允许不指向特定位置的指针存在且合法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式