【发布时间】:2018-04-30 20:43:53
【问题描述】:
在很多c代码sn-ps中我看到(void *)0,用指针转换整数是什么意思?
【问题讨论】:
-
(void *)0是一种写空指针常量的方法;NULL也是如此,在许多情况下,0也将在需要时转换为空指针常量(并且还有其他编写此类指针的方法)。如果被转换的值不为零,那么它有不同的用途,并且通常不太便携(意思是,根本不便携)。 -
“重复”并没有真正涵盖
(void *)0 -
我同意@M.M——重复的What does it mean to convert
inttovoid *or vice versa?) 没有提到(void *)0,它确实具有可移植和合理的含义。副本正在讨论(void *)5和类似的强制转换,主要是在pthread_create()的“数据”参数的上下文中,这是一个相当特殊的(ab)使用将整数强制转换为空指针。\ -
谢谢@JonathanLeffler,所以这是关键字NULL的另一种写法。
-
@HenokTesfaye:写
(void *)0是写NULL的另一种方式,但NULL不是关键字——它只是一个宏定义,当你包含任何一个标准时C 头文件(<locale.h>、<stddef.h>、<stdio.h>、<stdlib.h>、<string.h>、<time.h>)。