一个c回调函数的例子

来源:互联网 发布:天盾苹果数据恢复软件 编辑:程序博客网 时间:2024/05/19 10:10

一个c回调函数的例子

1人收藏此文章, 收藏此文章发表于8个月前 , 已有392次阅读 共0个评论 1人收藏此文章

01#include<stdio.h>
02// 方法指针的格式为:int (*ptr)(char *p) 即:返回值(指针名)(参数列表)
03 
04typedef int (*CallBackFun)(char *p); // 为回调函数命名,类型命名为 CallBackFun,参数为char *p
05 
06 
07 
08 
09// 方法 Afun,格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun   
10int 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
23int 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// 执行回调函数,方式一:通过命名方式
36int 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// 执行回调函数,方式二:直接通过方法指针   
51int call2(char *p, int (*ptr)())
52 
53{
54 
55    printf("==============\n", p);    
56 
57    (*ptr)(p);
58 
59}
60 
61 
62 
63// 执行回调函数,方式一:通过命名方式
64int call3(char *p, CallBackFun pCallBack)
65 
66{
67 
68    printf("--------------\n", p);   
69 
70    pCallBack(p);
71 
72}
73 
74 
75 
76int 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}
原创粉丝点击