回調(diào)函數(shù) 就是上層調(diào)用 設(shè)置下去
創(chuàng)新互聯(lián)專業(yè)提供服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買服務(wù)器托管服務(wù),并享受7*24小時金牌售后服務(wù)。
底層通過函數(shù)指針調(diào)用上層函數(shù)
多文件中才有用 單文件可以模擬
比如
#include?stdio.h
typedef?void?(*pFuncCb)?(int);//定義回調(diào)函數(shù)。
void?callback1(int?a)
{
printf("callback?function1?is?called?and?parameter?=?%d\n",?a);//打印1
}
void?callback2(int?a)
{
printf("callback?function2?is?called?and?parameter?=?%d\n",?a);//打印2
}
pFuncCb?callback_function;
void?lowerFunc(int?n)
{
int?i;
for(i?=?n;?i??n+10;?i?++)
if(callback_function)?callback_function(i);
}
int?main()
{
callback_function?=?callback1;
lowerFunc(1);//?會打印十次?打印1,?1到10
callback_function?=NULL;
lowerFunc(10);//沒有打印。
callback_function?=?callback2;
lowerFunc(100);//?會打印十次?打印2,?100到110
return?0;
}
從功能上來說 普通函數(shù)也是可以的
但在比較大的程序設(shè)計中 會對很多功能模塊進行封裝
比如 上層一個模塊
底層一個模塊
同時規(guī)定,上層可以調(diào)用底層的函數(shù),但是底層不可以調(diào)用上層函數(shù)。
這時就需要使用回調(diào)函數(shù)。
通過上層調(diào)用底層的注冊回調(diào)借口,傳入回調(diào)指針。
實現(xiàn)底層通知上層的作用。
另外 回調(diào)函數(shù)的一個好處是,可以通過回調(diào)函數(shù),調(diào)用不同接口。
比如接收數(shù)據(jù),不同數(shù)據(jù)需要不同的解析函數(shù)。
但是接收數(shù)據(jù)的流程是相同的
這樣 使用回調(diào)函數(shù),在接收數(shù)據(jù)的時候就可以不用判斷,而是自動使用不同的解析函數(shù)。
總之 使用回調(diào)函數(shù),可以降低耦合,實現(xiàn)多樣性。
typedef
struct
{
int
a;
void
(*pshow)(int);
}TMP;
void
func(TMP
*tmp)
{
if(tmp-a
10)//如果a10,則執(zhí)行回調(diào)函數(shù)。
{
(tmp-pshow)(tmp-a);
}
}
void
show(int
a)
{
printf("a的值是%d\n",a);
}
void
main()
{
TMP
test;
test.a
=
1;
test.pshow
=
show;
func(test);
}
這只是舉例,一般回調(diào)函數(shù)的用法為:
甲方進行結(jié)構(gòu)體的定義(成員中包括回調(diào)函數(shù)的指針)
乙方定義結(jié)構(gòu)體變量,并向甲方注冊,
甲方收集N個乙方的注冊形成結(jié)構(gòu)體鏈表,在某個特定時刻遍歷鏈表,進行回調(diào)。
文章標題:c語言注冊函數(shù)回調(diào) java注冊回調(diào)函數(shù)
文章轉(zhuǎn)載:http://chinadenli.net/article8/dodspop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、建站公司、做網(wǎng)站、網(wǎng)站導航、動態(tài)網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)