相关疑难解决方法(0)

对C++中的指针使用NULL或0(零)吗?

在C++的早期,当它被用螺栓固定在C之上时,你不能使用NULL,因为它被定义为(void*)0.你不能将NULL分配给除了之外的任何指针void*,这使得它变得毫无用处.在那些日子里,人们接受了你使用0(零)空指针.

直到今天,我继续使用零作为空指针,但我周围的人坚持使用NULL.我个人认为给NULL现有值一个name()没有任何好处- 因为我也喜欢将指针测试为真值:

if (p && !q)
  do_something();
Run Code Online (Sandbox Code Playgroud)

然后使用零更有意义(如果你使用NULL,你不能逻辑使用p && !q- 你需要明确比较NULL,除非你假设NULL是零,在这种情况下为什么使用NULL).

有没有客观的理由偏好零而不是NULL(反之亦然),或者只是个人偏好?

编辑:我应该添加(并且最初要说)使用RAII和异常,我很少使用零/ NULL指针,但有时你确实需要它们.

c++ null

186
推荐指数
13
解决办法
13万
查看次数

我们如何检查指针是否为NULL指针?

我一直认为只会if(p != NULL){..}做这项工作.但在阅读Stack Overflow问题后,似乎没有.

那么在吸收了那个说明NULL指针可能具有非零值的问题的所有讨论之后检查NULL指针的规范方法是什么?

c null-pointer

42
推荐指数
5
解决办法
13万
查看次数

Boost.Test检查指针是否为空

我有以下测试:

BOOST_CHECK_NE(pointer, nullptr);
Run Code Online (Sandbox Code Playgroud)

由于编译失败

/xxx/include/boost/test/tools/detail/print_helper.hpp:50:14:错误:'operator <<'的模糊重载(操作数类型是'std :: ostream {aka std :: basic_ostream}'和'的std :: nullptr_t")

有什么问题,我应该如何测试空指针?

c++ boost c++11 boost.test

7
推荐指数
1
解决办法
2429
查看次数

标签 统计

c++ ×2

boost ×1

boost.test ×1

c ×1

c++11 ×1

null ×1

null-pointer ×1