【开源】再发两个回调函数例子 2009年3月7日
//以下两个例子 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编辑过] //回调函数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;
}
<p>这个貌似是"调用函数指针"吧.</p>
<p> </p>
<p>setTimer函数那种好象才是回调?</p>
页:
[1]