函數指針是指向函數而非指向對象的指針。像其餘指針同樣,函數指針也指向某個特定的類型。函數類型是由其返回類型及其形參表肯定,而與函數名無關。函數
eg:指針
bool (*pf)(int);將pf聲明爲指向函數的指針,它所指向的的函數帶有一個int類型的形參和bool類型的返回值對象
1,利用typedef簡化函數指針的定義it
typedef bool (*cpmFun)(int);引用
該定義表示cmpFun是一種指向函數指針類型的名字。要使用這種函數指針類型是,只須要使用cmpFun便可,不用寫完整定義。vi
2,指向函數指針的初始化和賦值
在引用函數名有沒有調用該函數是,函數名被自動解釋爲指向該函數的指針。
初始化:
cmpFun pf1 = 0; //不綁定函數給此函數指針;
cmpFun pf2 = visit; //將符合此類型的visit函數綁定給此函數指針
cmpFun pf3 = &visit //直接引用函數名等效於在函數名上應用取地址操做符
賦值
pf2 = pf1;
3,經過指針調用函數
cmpFun pf = visit;
visit(1);
pf(1); //pf隱式間接調用visit
(*pf)(1); //pf顯示間接調用visit