我目前正在从事介绍 C 类的项目,我们基本上是在 C 中创建哈希表实现,但我当前的问题是关于如何在我的教授提供的代码框架中编写某个函数。这是创建方法的 header 定义:
Table* create(long (*hash)(void* key),
bool (*equals)(void* key1, void* key2),
void (*print)(void* key1, void* key2));
这似乎是指向函数的指针作为参数?我什至不确定如何调用它,或者调用它时会发生什么。我什至不确定这些方法(散列、等于和打印)从何而来。任何帮助将不胜感激。谢谢
最佳答案
This appears to be pointers to functions as parameters?
是的。
I'm not sure how to even call this
要调用函数create
,传递一些具有正确类型的函数的地址来调用create
:
create(&f1, &f2, &f3);
or what happens when it is called.
create
主体中的任何位置(*)调用指向的函数,实际函数(例如 f1
)最终会使用提供的参数调用.它可以是 (*equals)(k1, k2);
作为一个可能发生在 create
中的虚构示例。
(*) 或者,在这种情况下,另一个函数将从 create
分配的结构中获取函数指针,它将存储它们
事实上,C 允许您在第一种情况下编写 create(f1, f2, f3);
,在第二种情况下编写 equals(k1, k2);
,但是这只是一种方便。
关于c - 在 C 中作为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29549323/