找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5110|回复: 2

[开源] 【开源】再发两个回调函数例子 2009年3月7日

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2009-3-7 19:37:07 | 显示全部楼层 |阅读模式
//以下两个例子 VC6调试通过

//回调函数.cpp
#include <stdio.h>
typedef int(*CallBack)(char *p); //声明CallBack 类型的函数指针

int A(char *p)
{

printf("A\n");
printf("%s\n",p);
return 0;
}

int B(CallBack lpCall, char *p)
{
printf("B\n");
printf("%s\n",p);
lpCall(p); //借助回调完成的功能,也就是A函数来处理的.
return 0;
}

int main(int argc, char* argv[])
{

char *p = "阿杰助您早日成为VC编程高手!";
B(A, p);
return 0;
}

[此贴子已经被作者于2009-3-7 19:48:01编辑过]
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2009-3-7 19:45:50 | 显示全部楼层
//回调函数1.cpp
//阿杰:2009年3月7日
#include <stdio.h>
typedef void(*f1)(); // 为函数指针声明类型定义
void(*p)(); //p是指向某函数的指针
void func1()
{
/* do something */
printf("From func1(), Hello World!\n");
}

void caller(void(*ptrfunc1)())
{
ptrfunc1(); /* 调用ptr指向的函数 */
}

//typedef bool (*f2) (int *);// 为函数指针声明类型定义
//bool (*q) (int *); //p是指向某函数的指针

bool func2(int *t_i)
{
/* do something */
printf("From func2() = %d, Hello World!\n", (*t_i)++);
return true;
}

void caller2(bool(*ptrfunc2)(int*), int *i)
{
ptrfunc2(i); /* 调用ptr指向的函数 */
}


int main(int argc, char *argv[])
{
printf("From main(), Hello World!\n");
printf("\n");

//无参数调用
p = func1; /* 传递函数地址地址 */
caller(p); /* 传递函数地址到调用者 */

//有参数调用
int i = 0;
for (int j = 0; j < 10; j++)
{
  caller2(func2, &i); //* 传递函数地址到调用者 */
}

//有参数调用第二次

i = 0;
//q = func2; /* 传递函数地址地址 */
//caller2(q, &i); /* 传递函数地址到调用者 */

printf("\n");
printf("From main(), Hello World!\n");

getchar();

return 0;
}
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

76

主题

375

回帖

0

精华

铜牌会员

积分
231
发表于 2009-3-9 10:55:47 | 显示全部楼层
<p>这个貌似是"调用函数指针"吧.</p>
<p>&nbsp;</p>
<p>setTimer函数那种好象才是回调?</p>
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表