在接触程序一段时间后,或多或少都需要接触到回调函数,回调函数的使用其本质也就是函数指针调用函数;
也就是我把函数地址给你,你去调用,你去传参,这就是为什么我在调用别人的回调函数的时候,不需要给参数了,因为参数不归我给,我只给这个回调函数给他用就ok了。下面以一个自己写的例子来加深记忆:
在一个利用winpcap网络监听数据的程序中,用到下面一个全局函数:pcap_loop;
pcap_loop(pFun->handler,pFun->count,(pcap_handler)pFun->pFun,pFun->uFirstParam);
这个函数并不是开源的,但有说明:
其中,第三个参数,需要的就是一个函数指针,其类型是必须是pcap_handler这个类型;
我们调用第三方库里面的这个函数,pcap_loop,需要传一个pcap_handle类型的函数地址给他,这个函数由我们自己实现,但却由pcap_loop这个函数去调用,参数也由这个函数下提供;这样就明白了,我写一个函数,函数类型固定,只告诉别人地址,让他传参数调用就是了,大概就是这么个意思。也就是说,函数里需要一个参数为特定类型的函数指针(知道该如何给参数)的函数,即为回调函数!