2

在 C 中,函数指针(void*)在做什么:

    int (*fn) (void*)

如果参数什么都不是,那么它应该是:

    int (*fn) ()

我的理解是void*大块的记忆。 void* mem表示mem指向一块内存。但什么是(void*)没有名字的?

4

4 回答 4

6

该函数指针声明不需要您提供void*名称。它只需要一个类型来定义参数列表。

这类似于如何:

void my_function(int x);

void my_function(int);
于 2013-05-26T01:40:17.933 回答
4

void *是一个匿名指针。它指定一个指针参数,但不指明所指向的具体数据类型。

于 2013-05-26T01:38:21.363 回答
2

未命名的参数与没有参数不同。声明:

int (*fn)(void*);

只是声明这fn是一个带void*参数的函数指针。参数名称是无关紧要的(并且仅在函数实现中它是局部变量的名称时才有意义)。

(虽然在函数声明中参数名称不是必需的,但对于阅读代码以识别参数是什么的人来说仍然很有用。)

于 2013-05-26T02:38:30.677 回答
1

它的意思fn是“任何将一块内存作为参数并返回一个 int 的函数”

于 2013-05-26T01:38:43.950 回答