wol*_*ang 18
在C中将void指针转换为另一个类型有两个原因.
*(int*)p = 42
)1的原因应该是显而易见的.第二个原因是因为C++不允许隐式转换void*
为其他类型,而C允许它.
如果要取消引用它们,则需要将void指针转换为其他内容,例如,您将void指针作为函数参数获得,并且您确定这是一个整数:
void some_function(void * some_param) {
int some_value = *some_param; /* won't work, you can't dereference a void pointer */
}
void some_function(void * some_param) {
int some_value = *((int *) some_param); /* ok */
}
Run Code Online (Sandbox Code Playgroud)