回调函数_C语言

Kael'thas / 2023-05-12 / 原文

  1. 定义

一般情况下,当程序跑起来时会调用预备好的函数。但有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用以完成目标任务。这种被当做参数传递的函数,称为回调函数(callback function)。

  1. 例程
#include <stdio.h>
void print1(int i){
    printf("%d\n",i);
}

void for_each(int *a,void(*pf)()){ //pf指向被回调函数地址
    for(int i=0;i<4;i++){
        (*pf)(*(a+i)); // (*pf)是函数名即print1,*(a+i)是函数的参数。等价于print1(*(a+i));
    }
}

int main(){
    int arr[]={1,2,3,4};
    for_each(arr,print1); //两个疑问:for_each、print1分别是什么
    return 0;
}

由此可知,函数名不加括号是函数地址,被回调的函数做为参数传递。