我从来没有用 C 编程过,所以请谁能告诉我这个结构是做什么的:
void funcName(void * self)
{ ... }
据我了解,funcName 接收到指向未知数据的指针,而这个函数什么也没收到
但是为什么会有一个 void * self
我从来没有用 C 编程过,所以请谁能告诉我这个结构是做什么的:
void funcName(void * self)
{ ... }
据我了解,funcName 接收到指向未知数据的指针,而这个函数什么也没收到
但是为什么会有一个 void * self
这是一个接受 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 中可用的构造来模拟面向对象的编程风格。这种风格不是像成员函数那样隐式传递指向数据的指针,而是传递一个明确指向数据的指针。指针通常称为this
or self
。