Void * 更有趣一点。我不认为 C 设计师在
他们刚刚创建了一个关键字
需要一个指向任意类型的点,因此 void * 作为 C 语言中的成语。
如果您将 void 解释为空结构,那么它实际上工作得非常好。
Void * 指针是空结构所在位置的地址
已经放下了。
对于其他类型 T,从 void * 到 T * 的转换,也可以使用这个透视图。
指针强制转换是一种完全的欺骗,它在大多数常见的架构中都起作用,它利用了这样一个事实: 如果一个复合类型 T 的存储布局中有一个子类型 S 的元素物理地放置在 T 的开头,那么使用相同的物理机器地址强制转换 S * 到 T * ,反之亦然,因为大多数机器指针都有一个单一的表示。用 void 类型替换类型 S 会产生完全相同的效果,因此在 void * 中进行类型转换是可行的。