一个c回调函数的例子


转自:http://my.oschina.net/kaixindewo/blog/16320

01 #include<stdio.h>
02 // 方法指针的格式为:int (*ptr)(char *p) 即:返回值(指针名)(参数列表)
03  
04 typedef int (*CallBackFun)(char*p); // 为回调函数命名,类型命名为 CallBackFun,参数为char *p
05  
06  
07  
08  
09 // 方法 Afun,格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun   
10 int Afun(char *p)
11  
12 {
13  
14     printf("Afun 回调打印出字符%s!\n", p);   
15  
16     return 0;
17  
18 }
19  
20  
21  
22 // 方法 Bfun,格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun
23 int Cfun(char *p)
24  
25 {   
26  
27     printf("Cfun 回调打印:%s, Nice to meet you!\n", p);   
28  
29     return 0;
30  
31 }
32  
33  
34  
35 // 执行回调函数,方式一:通过命名方式
36 int call(CallBackFun pCallBack, char *p)
37  
38 {   
39  
40     printf("call 直接打印出字符%s!\n", p);   
41  
42     pCallBack(p);   
43  
44     return 0;
45  
46 }
47  
48 // int call2(char *p, int (*ptr)(char *p))
49  
50 // 执行回调函数,方式二:直接通过方法指针   
51 int call2(char *p, int (*ptr)())
52  
53 {
54  
55     printf("==============\n", p);    
56  
57     (*ptr)(p);
58  
59 }
60  
61  
62  
63 // 执行回调函数,方式一:通过命名方式
64 int call3(char *p, CallBackFun pCallBack)
65  
66 {
67  
68     printf("--------------\n", p);   
69  
70     pCallBack(p);
71  
72 }
73  
74  
75  
76 int main()
77  
78 {   
79  
80     char *p = "hello";
81     call(Afun, p);   
82  
83     call(Cfun, p);
84  
85     call2(p, Afun);   
86  
87     call2(p, Cfun);
88  
89     call3(p, Afun);   
90  
91     call3(p, Cfun);
92  
93     // int i = getchar();   
94  
95     // printf("Input: %c \n", i);
96  
97     return 0;
98  
99 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值