- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 50288 个
- 通用积分
- 83.6306
- 学术水平
- 253 点
- 热心指数
- 300 点
- 信用等级
- 208 点
- 经验
- 41518 点
- 帖子
- 3256
- 精华
- 14
- 在线时间
- 766 小时
- 注册时间
- 2006-5-4
- 最后登录
- 2022-11-6
已卖:4194份资源
院士
还不是VIP/贵宾
TA的文库 其他... Bayesian NewOccidental
Spatial Data Analysis
东西方数据挖掘
- 威望
- 0 级
- 论坛币
 - 50288 个
- 通用积分
- 83.6306
- 学术水平
- 253 点
- 热心指数
- 300 点
- 信用等级
- 208 点
- 经验
- 41518 点
- 帖子
- 3256
- 精华
- 14
- 在线时间
- 766 小时
- 注册时间
- 2006-5-4
- 最后登录
- 2022-11-6
|
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
- #include<stdio.h>
- //方法指针的格式为:int (*ptr)(char *p) 即:返回值(指针名)(参数列表)
- typedef int (*CallBackFun)(char *p); //为回调函数命名,类型命名为 CallBackFun,参数为char *p
- //方法 Afun,格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun
- int Afun(char *p)
- {
- printf("Afun 回调打印出字符%s!\n", p);
- return 0;
- }
- // 方法 Cfun,格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun
- int Cfun(char *p)
- {
- printf("Cfun 回调打印:%s, Nice to meet you!\n", p);
- return 0;
- }
- // 执行回调函数,方式一:通过命名方式,pCallBack可以看做是CallBackFun的别名
- int call(CallBackFun pCallBack, char *p)
- {
- printf("call 直接打印出字符%s!\n", p);
- pCallBack(p);
- return 0;
- }
- // 执行回调函数,方式二:直接通过方法指针
- int call2(char *p, int (*ptr)()) //或者是int call2(char *p, int (*ptr)(char *)) 同时ptr可以任意取名
- {
- printf("==============\n", p);
- (*ptr)(p);
- }
- int main()
- {
- char *p = "hello";
- call(Afun, p);
- call(Cfun, p);
- call2(p, Afun);
- call2(p, Cfun);
- return 0;
- }
- 再看一个回调函数的例子:
- #include <stdio.h>
- typedef void (*callback)(char *);
- void repeat(callback function, char *para)
- {
- function(para);
- function(para);
- }
- void hello(char* a)
- {
- printf("Hello %s\n",(const char *)a);
- }
- void count(char *num)
- {
- int i;
- for(i=1;i<(int)num;i++)
- printf("%d",i);
- putchar('\n');
- }
- int main(void)
- {
- repeat(hello,"Huangyi");
- repeat(count, (char *)4);
- }
复制代码
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|
|
|