c - 在 C 中作为参数的函数

标签 c function pointers parameters

我目前正在从事介绍 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/

相关文章:

c - 在C中查找变量的名称

c - SOMAXCONN在C套接字编程中是什么意思?

python - 函数调用执行速度比非函数调用快

c - 查看列表中下一个节点的地址时程序崩溃;只发生在非常奇怪的情况下

c - 使用多维数组时,使用指向该数组的指针与使用实际数组名称作为指针有什么区别

c - 如何获取通过该指针调用的函数中的指针地址

c - 为什么这些调用具有相同的内存地址?

MySQL。函数中的逻辑错误应返回大写字母前带有空格的字符串

javascript - 有没有办法从函数内定义的变量获取信息?

c++ - 在 C++ 中使用 new 分配内存和重新解释指针