程序中不可避免的使用函數指針,各種回調,加強一下理解(一)定義函數指針
// PFN是函數指針char (*PFN)(int);
char gpfn(int val){ cout << val << endl; return 1;}
PFN是一個函數指針 指向char(*)(int)類型的函數指針,這種函數參數是一個int,返回類型是一個char,如果要對它賦值,需要參數和返回類型一致 第二行定義了一個函數glFun()。該函數正好是一個以int為參數返回char的函數。我們要從指針的層次上理解函數——函數的函數名實際上就是一個指針,函數名指向該函數的代碼在內存中的首地址。(二)賦值和調用賦值
這兩種方法都可用,C++primer上有說明
(三)常見的函數指針的應用標準模板庫中的排序啊, 比較啊 都會常用的函數指針比如我們定義了結構體 FightAttr記錄了戰斗的一些數據,比如連擊次數, 戰斗得分... 我們只記錄了每個人的FightAttr, 如何對他們排序呢struct FightAttr{ Combo combo; Score score; ....};可以用sort 等排序
sort允許使用自己定義的比較函數(第三個參數)
參考blog:
http://www.cnblogs.com/ly4cn/archive/2005/11/28/286185.html
http://ly4cn.cnblogs.com/archive/2005/12/17/299007.html