C语言为什么这个条件判断无效?

clipboard.png

此时的DEBUG窗口

clipboard.png

LLDB查看结果也是这样

clipboard.png

我这里判断了是否为空,debug看到了结果是NULL,但是却执行到了if里面去,是不是有什么疏忽的地方,大佬们指点一下

阅读 4.2k
3 个回答

使用nullptr代替NULL,NULL在C++中代表0,nullptr则是nullptr_t的实现

新手上路,请多包涵

从本质上看0、NULL和 nullptr
1) 0是int型的字面值常量
2) NULL 是预处理变量,定义在 cstdlib 中,其值是0
3) nullptr 是 nullptr_t 类型的字面值。
从字面上来讲,NULL是个空指针常量,而在C++中NULL扩展为常数0,它是int型。因此常数0既是整数常量,也是空指针常量。C++11标准引入了关键字nullptr,它作为一种空指针常量,是 nullptr_t 类型的常量,而该类型定义了转到任意指针类型的转换操作符,同时不允许该类型的对象转换到非指针类型。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题