首頁  >  文章  >  後端開發  >  回呼函數和普通函數有什麼差別?

回呼函數和普通函數有什麼差別?

怪我咯
怪我咯原創
2017-06-19 11:24:553273瀏覽

普通函數回呼函數的區別:

對普通函數的呼叫:呼叫程式發出對普通函數的呼叫後,程式執行立即轉向被呼叫函數執行,直到被呼叫函數執行完畢後,再返回呼叫程式繼續執行。從發出呼叫的程式的角度看,這個過程為「呼叫-->等待被呼叫函數執行完畢-->繼續執行」

對回呼函數呼叫:呼叫程式發出對回調函數的調用後,不等函數執行完畢,立即返回並繼續執行。這樣,呼叫程序執和被呼叫函數同時在執行。當被調函數執行完畢後,被調函數會反過來呼叫某個事先指定函數,以通知呼叫程式:函數呼叫結束。這個過程稱為回呼(Callback),這正是回呼函數名稱的由來。

普通函數,回呼函數都是被其他函數呼叫的,不同之處在於呼叫者是否明確知道自己呼叫的到底是什麼,舉個例子:
void func1(){}
void func2(){}
typedef void (*fp)();//申明函數指標,fp表示一個空參數,傳回型別void的函式指標
void funcCaller1() {
//此處func1可以看成普通函數
   func1();//此處,funcCall1明確知道自己呼叫了func1
}
void funcCaller2(fp funcPtr){
funcPtr();//此處,funcCall2並不知道自己到底調用的是什麼,只知道自己呼叫了一個空參數的,返回類型是void的函數
}
void funcCaller3(){
//此處,funcCaller2是普通函數,func1是回呼函數
   funcCaller2(func1);//呼叫funcCaller2,參數是func1
//此處,funcCaller2是普通函數,func2是回呼函數
   funcCaller2(func2);//呼叫funcCaller2,參數是func2
}

#

以上是回呼函數和普通函數有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn