函数指针数组指针如何作为参数写入一个函数内部,比如函数指针数组为int(*Cmp[5])(Con*,const char*,int) = {Cmp_name,Cmp_sex ,Cmp_age,Cmp_tel,Cmp_adress }; ,第一个问题将这个函数指针数组作为该参数如何存放在一个函数内,比如这个函数为void Pp_Delask(),第二个问题,在这个函数内部想调用函数指针数组中的一个函数如何表达这个函数 
时间: 2023-03-13 11:30:47 浏览: 45
答:将函数指针数组作为参数存放在函数内部可以使用函数参数传递的方式,比如在函数Pp_Delask()中声明一个参数int(*Cmp[5])(Con*,const char*,int),在调用函数时将函数指针数组传入该参数即可。调用函数指针数组中的一个函数可以使用指针的方式,比如在函数Pp_Delask()中定义一个函数指针int(*p)(Con*,const char*,int),将它指向函数指针数组中的一个函数,比如(*p)=Cmp_name,然后直接调用(*p)(Con*,const char*,int)即可。
相关问题
请举个例子排序函数指针
假设有一个整数数组 `arr`,我们可以按照从大到小的顺序对其进行排序。下面是一个使用排序函数指针进行排序的例子:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
return a > b;
}
int main() {
vector<int> arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
sort(arr.begin(), arr.end(), cmp);
for (auto& x : arr) {
cout << x << " ";
}
cout << endl;
return 0;
}
```
在上面的例子中,我们定义了一个比较函数 `cmp`,它的功能是比较两个整数的大小,返回值为 `true` 表示第一个整数比第二个整数大。在 `main()` 函数中,我们通过 `sort` 函数对 `arr` 进行排序,其中第三个参数为指向 `cmp` 函数的指针,表示按照 `cmp` 函数的规则对 `arr` 进行排序。最终输出的结果是 `9 6 5 5 5 4 3 3 2 1 1`,满足从大到小的要求。
int cmp(const void* a, const void* b) {//定义一个比较函数 int* a1 = (int*)a; int* b1 = (int*)b; return *b1 - *a1;为什么要转化为int指针类型
这是因为在标准库函数qsort中,比较函数cmp的参数类型必须为const void*类型。void*类型是一种通用指针类型,不能进行算术运算,因此无法直接取出指针指向的值进行比较。为了能够从void*类型中取出指向的值,需要先将其转化为具体的指针类型,即将const void*类型的指针转化为int*类型的指针,然后再通过*运算符取出指针所指向的值进行比较。因此,在比较函数cmp中进行类型转换是必要的。
相关推荐















