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*。
我正在尝试了解通用函数的其他工作方式, 让我们把它作为最简单的例子,如果我想要一个函数,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*。