眼尖的朋友可能发现了,前面的例子里面回调函数是没有参数的,那么我们能不能回调那些带参数的函数呢?答案是肯定的。那么怎么调用呢?我们稍微修改一下上面的例子就可以了:
- #include<stdio.h>
- int Callback_1(int x) // Callback Function 1
- {
- printf("Hello, this is Callback_1: x = %d ", x);
- return 0;
- }
- int Callback_2(int x) // Callback Function 2
- {
- printf("Hello, this is Callback_2: x = %d ", x);
- return 0;
- }
- int Callback_3(int x) // Callback Function 3
- {
- printf("Hello, this is Callback_3: x = %d ", x);
- return 0;
- }
- int Handle(int y, int (*Callback)(int))
- {
- printf("Entering Handle Function. ");
- Callback(y);
- printf("Leaving Handle Function. ");
- }
- int main()
- {
- int a = 2;
- int b = 4;
- int c = 6;
- printf("Entering Main Function. ");
- Handle(a, Callback_1);
- Handle(b, Callback_2);
- Handle(c, Callback_3);
- printf("Leaving Main Function. ");
- return 0;
- }
复制代码
运行结果:
Entering Main Function.Entering Handle Function.Hello, this is Callback_1: x = 2Leaving Handle Function.Entering Handle Function.Hello, this is Callback_2: x = 4Leaving Handle Function.Entering Handle Function.Hello, this is Callback_3: x = 6Leaving Handle Function.Leaving Main Function. |