回调函数的含义
回调函数通常作为参数传递给其他函数,它是一个通过函数指针调用的函数。简单来说这个函数的作用就是用来在特殊的条件满足时用来调用其他函数的一个函数。
回调函数的使用
当相同或者相似的函数出现多份的时候,那么由于相同的部分出现过多就会显得代码冗余,可读性不高。此时如果将相似代码中的不同区域挑出进行分类,那么就能实现代码的优化。而回调函数的作用也就是如此。
如图所示的逻辑转变,使得代码的纵向变得简短,横向变得通透但是功能不受改变。
#include <stdio.h> int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int div(int a, int b) { return a / b; } //四组等待调用的函数
在简单的四则运算中,拥有四种情况:加减乘除,那么我们就需要调用这四组函数来实现计算器。
在使用回调函数之前:
上述的代码中我们发现其实只有红框中的内容是不一样的,那么我们其实可以只将这四个不一样的内容作为选项就可以简化代码。
如果此时我们编写一个回调函数:
void calc(int(*pf)(int, int)) { int ret = 0; int x, y; printf("输⼊操作数:"); scanf("%d %d", &x, &y); ret = pf(x, y); printf("ret = %d\n", ret); }
它使用了一个基于函数指针数组的函数calc来实现函数的回调,从而达到下方的效果,利用数组的元素变化替代特殊情况来调用不同的函数。
此时我们发现函数调用不再基于a+b+x的形式而是将a+b和x变量都拿出来,只考虑变量x的变化,使得代码得以优化。