立即学习:https://edu.csdn/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 = &sum;
	//printf("max = %d\n", max(1, 2, p_sum));
	fun(max, min, sum);

	return 0;
}

 

更多推荐

学习笔记(68):C语言入门到精通-函数指针