程序中不可避免的使用函數指針,各種回調,加強一下理解
(一)定義函數指針

// 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:
C++指針探討 (一)數據指針
http://www.cnblogs.com/ly4cn/archive/2005/11/28/286185.html