回調函數

回調函數


複習了下函數指針,把複習得到的東西記錄一下:


  以前用c語言qsort函數的時候,知道傳入一個函數指針的參數,這個函數是由自己寫的,用來確定排序的順序是由大到小還是由小到大,以前沒有特別的考慮,想着爲什麼要這麼麻煩,直接傳入一個flag確定方向不就好了。

  現在重新看了下回調函數,發現那個不就是回調函數嘛!回調函數的執行體由我們自己寫,調用回調函數的qsort函數由庫函數寫好,這樣就實現了代碼的最大化重用,效率又比較高。

  仔細想想,回調函數最顯著的特點應該就是分離,把一個比較通用的代碼塊(qsort函數)中的需要特殊化的部分(qsort中的比較函數)分離開,這樣除了比較函數外,其他部分利用率達到了最高。

  除此之外,回調函數還可以比較好的分離調用與被調用,使得調用者不必知道回調函數的具體調用形式,只要知道調用回調函數的具體形式就可以了(往往這是更加簡潔易記的)。

  總之,函數指針還有一些好玩的用法,以後繼續學習。

另外函數指針的類型一般用typedef重新命名以便於簡化代碼,格式如下:

    void CallBack(void); //以此回調函數聲明爲例
    typedef void (*CBF)(void);//CBF就是指向回調函數形式的指針類型

    //調用回調函數的函數的聲明類似下面:
    void SetCallBack(CBF f);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章