Loading

c语言中的回调函数

定义

  1. 回调函数是指作为参数传递给其他代码的函数,该代码在特定时间内调用该函数。
    换言之,回调函数就是将一个函数(可执行代码)作为参数传递给另个函数,然后由接受该参数的函数调用。
  2. 回调函数是通过函数指针进行传递。 回调函数是一个端,主要的函数是另一段,中间用一个函数指针来进行调用回调函数的中间的执行。
  3. 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 语言中回调的工作原理

回调的逐步工作原理如下:

  1. 定义回调函数:这是将在另一个函数内部调用的函数。
  2. 声明函数指针:声明指向回调函数的指针,通常与回调函数的签名相匹配。
  3. 传递函数指针:将指针作为参数传递给另一个函数。
  4. 调用回调函数:在接收函数内部,使用函数指针调用回调函数。

回调函数示例

#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/

posted @ 2026-08-04 16:08  void_Takumi  阅读(2)  评论(0)    收藏  举报