函數指針作函數參數

回調函數的本質:提早作了一個協定(把函數的參數、返回值提早定義好)框架

 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...\n"); 10     return a + b; 11 } 12 
13 int myadd2(int a, int b) 14 { 15     printf("func add2() do...\n"); 16     return a + b; 17 } 18 int myadd3(int a, int b) 19 { 20     printf("func add3() do...\n"); 21     return a + b; 22 } 23 int myadd4(int a, int b) 24 { 25     printf("func add4() do...\n"); 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...\n"); 61     system("pause"); 62     return ; 63 }
相關文章
相關標籤/搜索