繁体   English   中英

这个返回值的目的是什么?

[英]What is the purpose of this return value?

我遇到了一些在 Google 或 SO 上找不到答案的代码。 我正在查看一个线程 function 如您所料返回 void* 。 然而,在线程 function 结束之前,它突然拉了这个噱头,

return (void*) 0;

这样做的目的是什么? 我无法理解它。

编辑:

在理解这与 NULL 相同之后——我认为他们使用它来跳过包括 stdlib。

(void*)0是 null 指针,又名NULL (实际上是在几个 header 文件中定义的宏,例如) stddef.hstdio.h基本相同的东西(void*)0 h)

更新:

如何解释 null 指针及其用处? 基本上,它是一个特殊值,表示“此指针未指向任何位置”或“此指针未设置为有效的 object 引用”。

历史记录:据说托尼·霍尔在 1965 年发明了 null 参考文献,众所周知,他对这项发明感到遗憾,因此称其为“十亿美元的错误”

无论何时使用指针,都必须确保永远不要取消引用 null 指针(因为它没有根据定义引用任何内容)。 如果你仍然这样做,至少你会得到异常的程序终止、一般的保护错误或意外的程序行为。

好吧,我还没有遇到任何 C++ 编译器说NULL0不能转换为void* (或 to/from int* ,例如)。 但是可能有一些智能编译器或静态分析工具会报告0 to void-pointer转换作为警告。

该语句通常在回调实现(如线程例程)中找到,它必须遵守所要求的回调原型( pthread_createCreateThread等)。 因此,当您实现 function 时,您必须返回所需的相同类型。 对于pthread_create例程,您必须返回一个void* - 这就是为什么return (void*)0; 在那儿。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM