我从未用C语言编程,所以请任何人都告诉我这个结构是做什么的:
void funcName(void * self)
{ ... }
据我所知,funcName接收指向未知数据的指针,此函数不接收任何内容
但为什么会出现无效*自我
答案 0 :(得分:4)
这是一个带有void指针的函数 - 一个没有特定类型的指针。 Void指针类型允许您将指向任何数据类型的指针传递给声明为此类的函数。该函数必须在从中读取/写入数据之前将指针强制转换为适当的类型,或将指针传递给采用void*
的其他函数。
任何指针都可以隐式或显式地转换为void*
。例如,您可以像这样调用funcName
:
int *ptr = malloc(100*sizeof(int));
funcName(ptr); // No error
然后,您可以使用不同的指针类型调用相同的函数:
struct mystruct_t *ptr = malloc(100*sizeof(mystruct_t));
funcName(ptr); // Again, no error
从指针的名称self
判断,该函数很可能试图使用C中可用的构造来模拟面向对象的编程风格。而不是将指针隐式地传递给数据的方式成员-functions do,这种样式明确地传递一个指向数据的指针。指针通常称为this
或self
。