1、函数指针:指向函数的指针变量
int func(int a);
int (*f)(int a);
f = &func;
函数指针应用场景:回调
调用别人提供的 API 函数,称为Call;
如果别人的库里面调用我们的函数,就叫Callback。
//库函数qsort排序函数定义
void qsort(void* base, //void*类型,代表原始数组
size_t nmenb, //size_t类型,代表数据数量
size_t size, //size_t类型,代表单个数据大小
int (*compare)(const void*, const void*)); //函数指针
//回调函数
//比较大小的规则,帮助对任意数据类型的数组进行排序。
//在库函数qsort调用我们自定义的比较函数,称为回调
int cmp_func(const void* _a, const void* _b) {
int* a = (int*)_a; //将void* 转成int* 类型
int* b = (int*)_b;
return *a - *b;
}
void test() {
int num[10] = { 3,33,2,4,5,18,6,3,22,20 };
qsort(num, 10, sizeof(num[0]), cmp_func);
for (int i = 0; i < 10; i++) {
printf("%d ", num[i]);
}
}
2、指针函数:带指针的函数,函数返回值返回某一类型的指针
int *f(x,y);