c-指向其他指针的“void*”



如果我将void *vptr传递给以other_type *ptr为参数的函数,vptr会自动转换为other_type *吗?这是代码,

typedef struct A {
    //...
}A;
void bar(A *a)
{
    //do something with a
}
int main()
{
    A a = {..};
    void *vp = &a;
    bar(vp);  //will vp be converted to A*?
}

我的代码是安全的还是正确的?

是的,void*可以隐式转换为任何指针类型,任何指针类型都可以隐式转化为void*。例如,这就是为什么不需要(也不应该)强制转换malloc的返回值。

您的代码将正常工作。您可以将void*传递给需要结构a*的对象。在这方面,C只是弱类型的。

最新更新