c语言中的回调函数
定义
- 回调函数是指作为参数传递给其他代码的函数,该代码在特定时间内调用该函数。
换言之,回调函数就是将一个函数(可执行代码)作为参数传递给另个函数,然后由接受该参数的函数调用。 - 回调函数是通过函数指针进行传递。 回调函数是一个端,主要的函数是另一段,中间用一个函数指针来进行调用回调函数的中间的执行。
- e.g:
#include <stdio.h> void A() { printf("I am function A"); } // Callback function void B(void (*ptr)()) { // Callback to A (*ptr)(); } int main() { // Function pointer to A() void (*ptr)() = &A; // Calling function B and passing // address of the function A as argument B(ptr); return 0; }
输出结果:B
I am function A
说明:
在该代码段中,演示了一个回调函数的用法。函数B()接受一个函数指针作为参数。在B()的内部,会调用该函数指针所指向的函数也就是函数A。这样一来可以通过函数B来动态调用函数A,从而实现回调机制。
语法结构
在 C 语言中,回调函数的语法涉及使用函数指针。函数指针是一个存储函数地址的变量。然后将函数指针传递给另一个函数,并可以使用指针来调用它。
// Function signature of the callback function
void callback_function(void);
void some_function(void(*callback)()){
//Calling the callback function
callback();
}
C 语言中回调的工作原理
回调的逐步工作原理如下:
- 定义回调函数:这是将在另一个函数内部调用的函数。
- 声明函数指针:声明指向回调函数的指针,通常与回调函数的签名相匹配。
- 传递函数指针:将指针作为参数传递给另一个函数。
- 调用回调函数:在接收函数内部,使用函数指针调用回调函数。
回调函数示例
#include <stdio.h>
// Callback function to compare two numbers
int comp(int a, int b) {
if (a > b) return a;
return b;
}
// Function that accepts a callback for comparison
void Max(int (*callback)(int, int), int x, int y) {
// Calls the callback function
int res = callback(x, y);
printf("Given Numbers: %d, %d\n" ,x, y);
printf("%d is greater", res);
}
int main() {
int x = 7, y = 10;
// Pass the compareNumbers function as callback
Max(comp, x, y);
return 0;
}
输出结果为
Given Numbers: 7, 10
10 is greater
参考资料
https://www.geeksforgeeks.org/c/c-programming-language/
https://www.geeksforgeeks.org/c/callbacks-in-c/
本文来自博客园,作者:void_Takumi,转载请注明原文链接:https://www.cnblogs.com/XpericalBOBO/p/22213726

浙公网安备 33010602011771号