假设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);
有效!
我应该如何解释第二种情况?