一. 函數(shù)指針的定義
1. 函數(shù)的作用:完成某一特定功能的代碼片段的封裝.
2. 函數(shù)的定義: 返回值類型,函數(shù)名,形參列表,函數(shù)體.
3. 函數(shù)的調(diào)用:函數(shù)名 + 形參
4. 函數(shù)的使?用包含函數(shù)聲明,函數(shù)實現(xiàn),函數(shù)調(diào)?用三部分.
函數(shù)名與數(shù)組名一樣,都是地址.
二. 函數(shù)類型
函數(shù)聲明中,去掉函數(shù)名就是函數(shù)的類型.
Eg: int max (int a , int b); 即函數(shù)類型為: int (int a, int b);
三. 函數(shù)指針類型定義
函數(shù)聲明: int max(int a, int b);
函數(shù)類型:int (int a, int b);
函數(shù)指針類型: int (*)(int a, int b);
函數(shù)指針定義:int (* p)(int a, int b) = NULL;
p為函數(shù)指針變量,其它的則為類型.
四. 函數(shù)指針使用
可以直接操作指針當函數(shù)名.
五. 函數(shù)回調(diào)
本質(zhì):函數(shù)指針作為函數(shù)參數(shù),函數(shù)調(diào)用時傳入函數(shù)地址.
函數(shù)回調(diào)可以讓程序變得更靈活.
高內(nèi)聚,低耦合.
函數(shù)回調(diào)Eg:int getValue(int a, int b,int (*)(int,int));
getValue(a,b,max);
六. 函數(shù)指針類型重定義
函數(shù)指針類型可以使用typedef進行類型定義,定義時新類型應當寫在指針變量的地方.定以后若使用新類型,則其使用方式如同int類型定義變量.void(* p)(char *); FUNP p;
typedef void (* FUNP)(char *);
七. 注意事項
1. 相同類型的函數(shù)可以使用同一個函數(shù)指針通過指針的重指向來完成一次調(diào)用.
2. 函數(shù)返回值為多個時,可以傳遞指針作為形參.