指针(5)---回调函数

简介: 指针(5)---回调函数

回调函数的含义

回调函数通常作为参数传递给其他函数,它是一个通过函数指针调用的函数。简单来说这个函数的作用就是用来在特殊的条件满足时用来调用其他函数的一个函数。

回调函数的使用

当相同或者相似的函数出现多份的时候,那么由于相同的部分出现过多就会显得代码冗余,可读性不高。此时如果将相似代码中的不同区域挑出进行分类,那么就能实现代码的优化。而回调函数的作用也就是如此。

如图所示的逻辑转变,使得代码的纵向变得简短,横向变得通透但是功能不受改变。

#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的变化,使得代码得以优化。

目录
相关文章
|
7月前
|
Unix
网络编程之 信号捕捉器(函数指针与回调函数)(2)
sigaction()函数 前面我们讲到的内容已经足以用来防止僵尸进程生成的代码。之所以博主还要介绍sigaction()函数是因为它类似于signal()函数,而且完全可以代替后者,也更稳定(主要是书上介绍到了
70 1
|
7月前
|
Linux
网络编程之 信号捕捉器(函数指针与回调函数)(1)
接着我们的信号说下去 之前博主给大家分享到了信号的概念和初步介绍signal函数的形式后就没有继续往下介绍了,实在是因为时间不够,那个时候博主还要上课,现在博主放假了就好好给大家分享一下如何注册信号捕捉,以及信号捕捉器的妙用。
73 1
|
2月前
|
C++
指针中的回调函数与qsort的深度理解与模拟
本文详细介绍了回调函数的概念及其在计算器简化中的应用,以及C++标准库函数qsort的原理和使用示例,包括冒泡排序的模拟实现。
21 1
|
2月前
魔法指针 之 函数指针 回调函数
魔法指针 之 函数指针 回调函数
17 0
|
7月前
|
编译器 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(下)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
44 0
|
6月前
|
C语言
指针进阶(回调函数)(C语言)
指针进阶(回调函数)(C语言)
|
7月前
|
算法 搜索推荐 C语言
c函数指针与回调函数
c函数指针与回调函数
48 2
|
7月前
|
算法 搜索推荐 程序员
C语言中的函数指针和回调函数
C语言中的函数指针和回调函数
46 2
|
7月前
|
存储 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(中)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
40 0
|
7月前
|
存储 C语言 C++
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(上)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
28 0