c函数表示returns一个值根据调用者的决定

c function that returns a value according to the caller's decision

我正在尝试了解通用函数的其他工作方式, 让我们把它作为最简单的例子,如果我想要一个函数,return max or min - 根据用户的选择, 是否可以这样做:

  void f(void* a, void* b, void *(comp)(void* a, void* b), void* result){
 ////does something////
 }

或者我必须发送一些密钥作为参数还是有其他方法? 谢谢

像这样调用这个函数:

void* mincmpi (void* a, void* b) {
  return (*(int*)a < *(int*)b)? a: b;
}
//...
f (a, b, &mincmpi, res);

然后在 f 内调用 comp:

result = *comp (a, b);

当然可以。这种比较器的一种情况是对序列进行排序。您可以在其中通过函数指针指定排序顺序。虽然我建议如果你真的不需要,不要使用 void*。