C回调函数的定义 传参 使用 typedef定义回调函数 函数指针的赋值

简介回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。 通过函数指针实现 同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用; 回 调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;

回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。

通过函数指针实现

同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;
回 调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;
异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。
回调和异步调用的关系非常紧密:使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
//定义回调函数
void PrintfText()
{
printf("Hello World!\n");
}

//定义实现回调函数的"调用函数"
void CallPrintfText(void (*callfuct)())
{
callfuct();
}

//实现函数回调
int main(int argc,char* argv[])
{
CallPrintfText(PrintfText);
return 0;
}





定义:

int (*fp_t)(char c);

int f0(char c) { printf("f0, c = %c\n", c); return 0;}

使用:

fp_t = f0; //&f0
fp_t('a');




通过typedef:


定义:

typedef int (*fp_t)(char c);

int f0(char c) { printf("f0, c = %c\n", c); return 0;}

使用:

fp_t fp;
fp = f0; //&f0
fp('a');



传参:函数指针直接调用就行了!


新加评论 评论标题: