callback c

 

#include <stdio.h>

static int Test1();
static int Test2(int num);
typedef int(*HaHa)();                  //***1111*****
typedef int(*CallBack)(int num);

int Test1()
{
   printf("%s/n","Hello world!");
   return 0;
}

int Test2(int num)

 int i;

   for (i=0; i<num; i++)
   {
    printf("The %d th charactor is: %c/n", i, (char)('a' + i%26));
 
   }
   return 0;
}

void Caller1(HaHa ptr)//指向函数的指针作函数参数,与***1111*****处的定义保持一致
{
   ptr(); //ptr后面的()不可少
}

//n实际上是ptr函数要用到的参数,但不能写成void Caller2(CallBack ptr(int n))
void Caller2(int n, CallBack ptr)
{                                              
   ptr(n);
   return;
}

int main()
{
   printf("11111111************************/n");
   Caller1(Test1); //相当于调用Test1();
   printf("22222222************************/n");
   Caller2(30, Test2); //相当于调用Test2(30);
   return 0;
}

/*
       以上通过将回调函数的地址传给调用者从而实现调用,但是需要注意的是带参回调函数的用法。
    要实现回调,必须首先定义函数指针。函数指针的定义这里稍微提一下。比如:

     int (*ptr)(); 这里ptr是一个函数指针,其中(*ptr)的括号不能省略,
  因为括号的优先级高于星号,那样就成了一个返回类型为整型的函数声明了。

     通过typedef将int (*ptr)()定义成了int (*CallBack)()只是为了直观,你可以起别的名字,比如
 typedef int(*HeHe)();
 typedef int(*CallBack)(int num);
*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,回调(callback)是一种常见的编程技术,它允许将一个函数作为参数传递给另一个函数,并在需要时被调用。回调函数可以用于实现事件处理、异步操作、状态通知等功能。 回调函数的使用步骤如下: 1. 定义回调函数:首先需要定义一个函数,该函数的类型与要调用它的函数所要求的回调函数类型一致。例如,如果要将回调函数作为参数传递给某个函数,那么回调函数的类型必须与该函数所要求的回调函数类型相同。 2. 注册回调函数:将定义好的回调函数作为参数传递给需要调用它的函数。这样,当满足某个条件时,该函数就会调用注册的回调函数。 3. 调用回调函数:当满足触发条件时,注册的回调函数会被调用,并执行相应的操作。 以下是一个简单的示例,演示了如何使用回调函数: ```c #include <stdio.h> // 定义回调函数类型 typedef void (*Callback)(int); // 调用回调函数的函数 void performOperation(int data, Callback callback) { // 执行某些操作 printf("Performing operation with data: %d\n", data); // 调用回调函数 callback(data); } // 回调函数 void callbackFunction(int data) { printf("Callback function called with data: %d\n", data); } int main() { int data = 10; // 注册回调函数 performOperation(data, callbackFunction); return 0; } ``` 在上述示例中,我们定义了一个回调函数类型`Callback`,然后在`performOperation`函数中将回调函数作为参数传递,并在满足条件时调用它。在`main`函数中,我们注册了`callbackFunction`作为回调函数,并将其传递给`performOperation`函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值