判断两个函数大小,按降序返回
时间: 2023-05-11 17:06:13 浏览: 87
可以使用函数指针来实现。首先定义一个函数指针类型,然后定义一个比较函数,该函数接受两个函数指针作为参数,比较它们的大小,返回一个整数值。最后,使用qsort函数对函数指针数组进行排序,按照比较函数的规则进行排序,最后按照降序返回排序后的函数指针数组。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef int (*func_ptr)(int);
int compare_func(const void* a, const void* b) {
func_ptr func_a = *(func_ptr*)a;
func_ptr func_b = *(func_ptr*)b;
if (func_a(0) < func_b(0)) {
return 1;
} else if (func_a(0) > func_b(0)) {
return -1;
} else {
return 0;
}
}
int func1(int x) {
return x + 1;
}
int func2(int x) {
return x * 2;
}
int func3(int x) {
return x - 1;
}
int main() {
func_ptr funcs[] = {func1, func2, func3};
int num_funcs = sizeof(funcs) / sizeof(funcs[0]);
qsort(funcs, num_funcs, sizeof(func_ptr), compare_func);
for (int i = 0; i < num_funcs; i++) {
printf("%d\n", funcs[i](0));
}
return 0;
}
```
输出结果为:
```
2
1
-1
```
这表示func1 > func2 > func3。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)