0

我从来没有用 C 编程过,所以请谁能告诉我这个结构是做什么的:

void funcName(void * self)
{ ... }

据我了解,funcName 接收到指向未知数据的指针,而这个函数什么也没收到

但是为什么会有一个 void * self

4

1 回答 1

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 中可用的构造来模拟面向对象的编程风格。这种风格不是像成员函数那样隐式传递指向数据的指针,而是传递一个明确指向数据的指针。指针通常称为thisor self

于 2012-10-11T17:24:04.627 回答