從功能上來說 普通函數(shù)也是可以的
10年積累的網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有下陸免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
但在比較大的程序設(shè)計(jì)中 會(huì)對很多功能模塊進(jìn)行封裝
比如 上層一個(gè)模塊
底層一個(gè)模塊
同時(shí)規(guī)定,上層可以調(diào)用底層的函數(shù),但是底層不可以調(diào)用上層函數(shù)。
這時(shí)就需要使用回調(diào)函數(shù)。
通過上層調(diào)用底層的注冊回調(diào)借口,傳入回調(diào)指針。
實(shí)現(xiàn)底層通知上層的作用。
另外 回調(diào)函數(shù)的一個(gè)好處是,可以通過回調(diào)函數(shù),調(diào)用不同接口。
比如接收數(shù)據(jù),不同數(shù)據(jù)需要不同的解析函數(shù)。
但是接收數(shù)據(jù)的流程是相同的
這樣 使用回調(diào)函數(shù),在接收數(shù)據(jù)的時(shí)候就可以不用判斷,而是自動(dòng)使用不同的解析函數(shù)。
總之 使用回調(diào)函數(shù),可以降低耦合,實(shí)現(xiàn)多樣性。
看一下這個(gè)例子吧,我是這樣理解的:
#include
"iostream.h"
#include
"windows.h"
typedef
void
(CALLBACK
*MyFun)(void);//回調(diào)函數(shù)定義
void
CALLBACK
callback()
//
回調(diào)函數(shù)
{
cout"****callback****\n";
}
void
Call_CallBack(MyFun
mycb)
{
cout"****Call_CallBack****\n";
mycb();
cout"__________________\n";
}
void
main()
{
Call_CallBack(callback);
}
//
其他人需要修改的話只要修改callback函數(shù)里的內(nèi)容就行了,一般sdk封裝后都會(huì)有回調(diào),這樣他人在調(diào)用sdk的時(shí)候就可以實(shí)現(xiàn)回調(diào)函數(shù)里的內(nèi)容。
如果你需要理論的,網(wǎng)上搜回調(diào)函數(shù),內(nèi)容哈多隨便看
括號(hào)里只是形參 表示該函數(shù)的輸入是個(gè)指針。 我可以起名叫Pfun當(dāng)然也可以是Qfun 還可以是fun1. 這沒什么區(qū)別。 同樣的,是該函數(shù)內(nèi)部當(dāng)然用的也是形參定義。所以是Pfun。