前言
你好,我是程序猿爱打拳。在我的上篇博文中我们学到了函数指针以及函数指针数组的用法,这篇博文我将延申上一篇博客来讲解回调函数的用法。当然,如果你还不懂函数指针和函数指针数组的用法可以观看这篇文章。
回调函数,是在函数指针的基础上进行修改的。什么意思呢:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应函数指针的用法。回调函数switch语句case语句实现四则运算器:
#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 calc(int (*p)(int,int)) { int x = 0; int y = 0; int ret = 0; printf("请输入两个整数:>"); scanf("%d %d", &x, &y); ret = (*p)(x, y); printf("结果为:%d\n", ret); } int main() { int input = 0; do { Menu(); printf("请输入你的选项:>"); scanf("%d", &input); switch (input) { case 0: printf("你已退出程序!"); break; case 1: calc(Add); break; case 2: calc(Sub); break; case 3: calc(Mul); break; case 4: calc(Div); break; default: printf("请输入正确的选项!\n"); } } while (input); return 0; }
实现效果:
编辑