c++ - 在 C++ 中, "return;"是否与 "return NULL;"相同?

标签 c++ null return

我的问题是 return; 和 C++ 中的 return NULL; 一样吗?

我理解在 C++ 中,return NULL; 在指针上下文中与 return 0; 相同。显然对于整数,情况并非如此,因为 NULL 不能被添加、减去等。并且一些人鼓励使用 0 而不是 NULL 作为指针,因为它更便于移植。我很好奇这是否是另一个发生等价的例子。

我怀疑它们是等价的,因为 return; 是说 return 'nothing' 而 NULL 是 'nothing'。但是,如果有人可以证实或否认这一点(当然要有解释),我将不胜感激!

最佳答案

is return; the same as return NULL; in C++?

没有。

return 用于“中断”没有返回值的函数,即 void 的返回类型。

return NULL 返回值NULL,它所在函数的返回类型必须与NULL兼容。


I understand that in C++, return NULL; is the same as return 0; in the context of pointers.

有点。 NULL 可能不等同于 0,但它至少会转换为某种东西。


Obviously for integers, this is not the case as NULL cannot be added, subtracted, etc.

您可以很好地对指针执行加法和减法。但是,无论如何,NULL 必须具有整数类型(C++03 中的 4.10/1 和 18.1/4),因此它没有实际意义。 NULL 很可能是一个扩展为 00UL 的宏。

不过,如果您编写的实际上是 NULL,一些现代编译器至少会警告您。


And that it is encouraged by some to use 0 instead of NULL for pointers because it is more convenient for portability. I'm curious if this is another instance where an equivalence occurs.

没有。我不同意这个建议。虽然我可以看到它的来源,但由于 NULL 的确切定义因实现而异,使用 NULL 将使其更容易替换为nullptr 当您切换到 C++11 时,如果没有其他内容是自记录的。

关于c++ - 在 C++ 中, "return;"是否与 "return NULL;"相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212901/

相关文章:

c++ - Qt networkAccessibleChanged 信号未触发

c++ - 从 hash_map 中的列表中删除元素

c++ - 类(class)尚未宣布但已包括在内?

c - 在不返回分配的指针的情况下,这段代码如何工作?

shell - 在vb6中获取实际的Powershell返回值?

c++ - 如何将文本文件中的字符串读入要搜索的 vector ?

ms-access - 我的查询的 MS Access 查询未返回字段中具有空值的行

c++ - 这个指针在C++中突然变成了0x0

java - 仅允许 null 选择加入

mysql - MySQL 中带游标的存储过程