【发布时间】:2015-04-23 07:22:54
【问题描述】:
为什么在 C 中允许从 void* 转换为 int 以及反之亦然?
除了pthread,它还用在什么地方?
【问题讨论】:
-
只是因为它在 pthread_create 中很方便。 &
void*&int通常具有相同的大小 - 4 个字节。但你不应该假设这一点。理想情况下,您应该将整数指针传递给它,而不是值。但是对于数字常量,我们使用这个技巧来传递值。 -
@anishane:
"void* & int have usually same size - 4 bytes"- 这是一个非常危险的假设 - 在过去的 32 位时代,它曾经是正确的,但现在大多数桌面和服务器操作系统都是 64 位的(LP64 = 4 byte int 和 8 字节指针)。 -
在 C 中允许从
int转换为指针的一个原因是代码可以访问 memory mapped I/O。