回调函数的本质:提前做了一个协定(把函数的参数、返回值提前定义好)
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 6 //任务实现者 7 int myadd(int a, int b) 8 { 9 printf("func add() do... "); 10 return a + b; 11 } 12 13 int myadd2(int a, int b) 14 { 15 printf("func add2() do... "); 16 return a + b; 17 } 18 int myadd3(int a, int b) 19 { 20 printf("func add3() do... "); 21 return a + b; 22 } 23 int myadd4(int a, int b) 24 { 25 printf("func add4() do... "); 26 return a + b; 27 } 28 29 typedef int (*MyTypeFuncAdd)(int a, int b); //定义类型 30 31 //任务调用者 32 int MainOp(MyTypeFuncAdd myFuncAdd) 33 { 34 int c =myFuncAdd(5, 6); 35 return c; 36 } 37 38 39 int MainOp2(int(*MyPointerFuncAdd)(int a, int b)) 40 { 41 int c = MyPointerFuncAdd(5, 6); 42 return c; 43 } 44 45 void main() 46 { 47 MyTypeFuncAdd myFuncAdd = myadd; 48 myFuncAdd(3, 4); //间接调用 49 50 myadd(1, 2); //直接调用 51 MainOp2(myFuncAdd); //myFuncAdd 52 MainOp(myFuncAdd); 53 54 //在mainop框架,不发生变化的情况下,调用后来者的程序 55 MainOp(myadd2); //传入的是函数的入口地址 56 MainOp(myadd3); 57 MainOp(myadd4); 58 59 60 printf("Hello... "); 61 system("pause"); 62 return ; 63 }