永发信息网

如何理解C++中的NULL?

答案:6  悬赏:10  手机版
解决时间 2021-02-09 08:41
  • 提问者网友:不要迷恋哥
  • 2021-02-08 15:01
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)是一样的。求指导。
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-02-08 15:57
作为一种风格, 很多人不愿意在程序中到处出现未加修饰的21130。因此定义5261了预处理宏NULL (在和其它几个头文件中) 为空指针常数, 通常是0 或者((void *)0) 。希望区别整数0 和空指针0 的人可以4102在需要空指针的地方使用NULL。
  使用NULL 只是一种风格习惯。预处理器把所有1653的NULL 都还原回0, 而编译还是依照上文的描述处理指版针上下文的0。特别是, 在函数调用的参数里, NULL之前(正如在0 之前) 的类型转换还是需要权。
  NULL 只能用作指针常数。
全部回答
  • 1楼网友:野慌
  • 2021-02-08 19:39
NULL是0的意思,定义一个数等于NULL,就是让这个数等于0.
  • 2楼网友:第幾種人
  • 2021-02-08 18:40
这里的 NULL 其实就是空指针,值的话就是0 因为继承C的缘故,可以用来作为判断条件,0为假,其他值为真 delete 后 t 并没有重新赋值,保存的是原来的内存地址,自然不是0,也就不等于 NULL
  • 3楼网友:白昼之月
  • 2021-02-08 18:16
if(t)和if(t != null)是一样的
  • 4楼网友:撞了怀
  • 2021-02-08 17:08
NULL是C语言发2113明的东西,在C里面5261null就是0,这样说很明白吧 在C++里面null仍然有效,但不再是0,0就是41020,null就是null,通常很少1653使用null了,null表示当前指针没有指向版任何位置,即允许不指向特定位置的指针存在且合法权
  • 5楼网友:十鸦
  • 2021-02-08 16:51
delete t 之后。t为野指针,指向一个你不能用的内存,并非是空指针(NULL)。 通常delete t后要跟一句t = NULL; 防止野指针的错误使用 delete只是删除t指向的内容
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯