C 此返回值的用途是什么?

C 此返回值的用途是什么?,c,multithreading,C,Multithreading,我遇到了一些在谷歌上找不到答案的代码。我正在研究一个线程函数,它返回void*,正如您所期望的那样。然而,在线程函数结束之前,它突然拉了这个特技 return (void*) 0; 这样做的目的是什么?我搞不懂 编辑: 在理解了这一点后,它与NULL相同——我认为他们使用它跳过了stdlib (void*)0是空指针,也称为null(实际上是在多个头文件中定义的宏,例如stddef.h或stdio.h,基本上与(void*)0相同) 更新: 如何解释空指针及其用途?基本上,它是一个特殊的值,表

我遇到了一些在谷歌上找不到答案的代码。我正在研究一个线程函数,它返回void*,正如您所期望的那样。然而,在线程函数结束之前,它突然拉了这个特技

return (void*) 0;
这样做的目的是什么?我搞不懂

编辑:

在理解了这一点后,它与NULL相同——我认为他们使用它跳过了stdlib

(void*)0
是空指针,也称为
null
(实际上是在多个头文件中定义的宏,例如
stddef.h
stdio.h
,基本上与
(void*)0
相同)

更新:

如何解释空指针及其用途?基本上,它是一个特殊的值,表示“此指针不指向任何地方”或“此指针未设置为有效的对象引用”

历史笔记:据说托尼·霍尔在1965年发明了空引用,他对这项发明感到遗憾,因此称之为他的:


无论何时使用指针,都必须确保从不取消对空指针的引用(因为它根据定义不引用任何内容)。如果你这样做,你会得到异常的程序终止,一般的保护错误,或意外的程序行为至少。< / P> < P>,我没有遇到任何C++编译器说:<代码> null < /C> >或<代码> 0 > />代码不能转换为<代码> Vult*/Cube >(或从/<从代码> int */COD>)。但可能有一些智能编译器或静态分析工具会将
0报告为无效指针
转换作为警告


该语句通常出现在回调实现(如线程例程)中,它必须遵循所需回调的原型(
pthread\u create
CreateThread
等)。因此,在实现该函数时,必须返回它所需的相同类型。对于
pthread\u create
例程,必须返回
void*
-这就是为什么
返回(void*)0
存在。

它与
返回NULL相同-为什么这是一个问题?也许你应该发布更多的代码?我以前从未见过这样做——它真的那么普遍吗?当然——为什么不呢?函数前面可能有一个或多个返回非空指针的return语句?除非您发布更多代码,否则我们不会知道……我唯一能理解的是,他们不想在定义NULL的地方包含stdlib?线程中没有其他返回。谢谢,我想我需要阅读更多人的代码,因为我对此一无所知。我需要看看别人是如何编码的,这样我就不会太拘泥于自己的风格。