【发布时间】:2013-06-03 21:14:59
【问题描述】:
作为 C 的新手,我从 void 指针中获得的唯一实际用途是用于可以在给定指针中存储不同数据类型的通用函数。因此,我在分配内存时没有对指针进行类型转换。
我看到一些代码示例有时使用 void 指针,但它们会进行类型转换。为什么这很有用?为什么不直接创建所需类型的指针而不是 void?
【问题讨论】:
-
你能举个例子吗?
-
您不需要从
void*转换,因为该语言定义了从void*到任何其他类型指针的自动转换,但并非所有程序员都知道这一点(甚至不是所有 C不幸的是,图书作者)。 -
@larsmans 更准确地说,C 标准定义了
void *所有 data 指针类型之间的隐式兼容性。函数指针不在游戏中(但是,如果您的系统是 POSIX,为什么任何理智的程序员会使用任何非 POSIX 的东西,那么函数指针也与void *兼容)。