立即学习:https://edu.csdn.net/course/play/10534/378153?utm_source=blogtoedu
学习目标
函数指针怎么定义。
函数指针有什么用。
回调函数。
函数指针怎么定义?
函数指针是指向函数的指针变量。
int a = 0;
int *p = &a;
int max(int x, int y);
int (*p)(int, int) = &max;
函数指针有什么用?
#include <stdio.h>
int max(int x, int y) {
return 30;
}
int main() {
int (*p)(int, int) = &max;
printf("max = %d\n", max(1, 2));
printf("max = %d\n", p(1, 2));
return 0;
}
回调函数
函数指针作为某个函数的参数。
函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。
简单讲:回调函数是由别人的函数执行时调用你实现的函数。
#include <stdio.h>
typedef int ID;
typedef int (*Min)(int, int);
typedef int (*Max)(int, int);
typedef int (*Sum)(int, int);
int min(int x, int y) {
return x < y ? x : y;
}
int max(int x, int y, Sum sum) {
int t = x > y ? x : y;
return t > sum(x, y) ? t : sum(x, y);
}
int sum(int x, int y) {
return x + y;
}
void fun(Max p_max, Min p_min, Sum p_sum) {
printf("max = %d\n", p_max(1, 2));
printf("min = %d\n", p_min(1, 2));
printf("sum = %d\n", p_sum(1, 2));
}
int main() {
//Sum p_sum = ∑
//printf("max = %d\n", max(1, 2, p_sum));
fun(max, min, sum);
return 0;
}