将void指针传递给函数指针

时间:2019-01-18 09:44:09

标签: c pointers

假设myStruct具有定义为
的字段 char *name;
我想将指向该字段的指针传递给分配内存并建立名称的函数。

我想做的基本上是这个

void myFunctionChar(char **ptr)
{
    *ptr = alloc(...);
}

myFunction(&myStruct->name);

这很好。但是函数不需要知道数据类型,所以为什么不知道呢。

void myFunction(void **ptr)
{
}

myFunction(&myStruct->name); // raises an error - incompatible pointers!

好的,为什么会出现错误?
我可以将每个指针分配给void*,并且函数声明似乎没问题,所以让我们尝试一下

void myFunction(void **ptr)
{
}

void **ptr = &myStruct->name;
myFunction(ptr);

有效!

我应该如何解释第二种情况?

0 个答案:

没有答案