1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言之回调函数(非常重要)附带回调函数版本实现整型的加减乘除四则运算

C语言之回调函数(非常重要)附带回调函数版本实现整型的加减乘除四则运算

时间:2023-09-12 19:40:44

相关推荐

C语言之回调函数(非常重要)附带回调函数版本实现整型的加减乘除四则运算

对于回调函数!想必大家的第一想法,想必就是函数吧!其实这个也是笔者的第一想法,毕竟之前没有见过回调函数,所以就不怎么知道细节!默认为直接调用函数,就是回调函数,但等学会了回调函数,其实就不是这样想了!!

下面请参考一下笔者的在百度百科中的搜索结果:显示回调函数的作用,及其使用方法!原文链接为::回调函数_百度百科回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现,在C++、Python、ECMAScript等更现代的编程语言中还可以使用仿函数或匿名函数。回调函数的使用可以大大提升编程的效率,这使得它在现代编程中被非常多地使用。同时,有一些需求必须要使用回调函数来实现。最著名的回调函数调用有C/C++标准库stdlib.h/cstdlib中的快速排序函数qsort和二分查找函数bsearch中都会要求的一个与strcmp类似的参数,用于设置数据的比较方法。/item/%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0/7545973?fr=aladdin下面是笔者简短的引用内容:借此来说明回调函数的重要性!也希望看到此篇博客的读者能够认真欣赏!

回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现,在C++、Python、ECMAScript等更现代的编程语言中还可以使用仿函数或匿名函数。

回调函数的使用可以大大提升编程的效率,这使得它在现代编程中被非常多地使用。同时,

有一些需求必须要使用回调函数来实现。

言归正传:下面请看笔者对于回调函数所下的简单定义:

回调函数就是一个通过函数指针调用的函数!如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这个是回调函数!回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时,由另外的一方调用的,用于对该事件或条件的相应!

其实笔者之前所写的关于计算器方面的博客,就可以改编为:回调函数方法实现计算器

对于原文档的参考代码为:

1.写一个计算器(C语言版本),可以求出:整数的加,减,乘,除四则运算_念君思宁的博客-CSDN博客

2.

编写程序简单实现计算器:加减乘除功能(函数指针数组的写法)_念君思宁的博客-CSDN博客_实现简单计算器加减乘除

上面的两个链接是笔者之前的实现计算器的两种C语言写法!下面笔者将会用回调函数来写一下计算器,实现整型的加减乘除运算!

1. 其实代码段大致还是跟上篇博文内容差不多类似!下面笔者对于相似的部分进行简单的引用,在此,笔者就不再进行过多的讲述(当然,建议有想法的读者去看一下笔者的上篇博客)!

相似部分的代码段为:

//简化一下代码#include <stdio.h>int Add(int x, int y){return x + y;}int Sub(int x, int y){return x - y;}int Mul(int x, int y){return x * y;}int Div(int x, int y){return x / y;}void menu(){printf("***************************\n");printf("***** 1.add 2. sub ****\n");printf("***** 3.mul 4. div ****\n");printf("*****0.exit ****\n");printf("***************************\n");}

上述代码主要还是函数部分,这儿可以实现加减乘除,及菜单的实现!

2. 函数的调用部分(重要环节)参考代码为:精彩环节!!

void cacl(int (*p)(int, int)){int x = 0;int y = 0;int ret = 0;printf("请输入2个操作数——》");scanf_s("%d %d", &x, &y);ret = p(x, y);printf("%d\n", ret);}

上面的这个代码段就用了回调函数,不知道细心的读者能否看清楚!!

在该代码中:ret = p(x, y); 就实现函数的调用:包括:Add,Sub,Mul,Div 这四个函数!对于ret = p(x, y); 也可以改写为:ret = (*p)(x, y); 那个 * 能够省略!

看见上述代码,对于p的调用或许还会有些疑惑,请看笔者的mian函数里面的内容,看了以后,或许您将会有恍然大悟的感觉!

int main(){int input = 0;do{menu();printf("请选择:》");scanf_s("%d", &input);switch (input){case 1:cacl(Add);break;case 2:cacl(Sub);break;case 3:cacl(Mul);break;case 4:cacl(Div);break;case 0:printf("退出计算器!\n");break;default :printf("选择错误,请重新选择!\n");break;}} while (input);return 0;}

对于main函数里面的内容,每一次进行输入input,都会在switch语句里面进行判断,决定进入哪一个函数里面,然后在调用该函数,实现对输入两个数字的加减乘除运算!

对于下面函数的调用部分:

cacl(Add);cacl(Sub);cacl(Mul);cacl(Div);

函数名就是函数的地址,既然是地址就要放在指针里面,所以前面使用了:

void cacl(int (*p)(int, int))ret = p(x, y);

因此总的代码为:

//简化一下代码#include <stdio.h>int Add(int x, int y){return x + y;}int Sub(int x, int y){return x - y;}int Mul(int x, int y){return x * y;}int Div(int x, int y){return x / y;}void menu(){printf("***************************\n");printf("***** 1.add 2. sub ****\n");printf("***** 3.mul 4. div ****\n");printf("*****0.exit ****\n");printf("***************************\n");}void cacl(int (*p)(int, int)){int x = 0;int y = 0;int ret = 0;printf("请输入2个操作数——》");scanf_s("%d %d", &x, &y);ret = p(x, y);printf("%d\n", ret);}int main(){int input = 0;do{menu();printf("请选择:》");scanf_s("%d", &input);switch (input){case 1:cacl(Add);break;case 2:cacl(Sub);break;case 3:cacl(Mul);break;case 4:cacl(Div);break;case 0:printf("退出计算器!\n");break;default :printf("选择错误,请重新选择!\n");break;}} while (input);return 0;}

代码的运行结果为:

上面就是笔者索要介绍的回调函数部分!回调函数版本实现整型的加减乘除四则运算

希望读者仔细思考!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。