一般需要定義一個函式指標型別
typedef int (*function_pointer_t) ( int arg1, int arg2 );
然後,定義函式指標變數
function_pointer_t fp_invoker = 0;
函式指標可以動態改變內容,改變呼叫物件,假設有兩個函式
int function_sum( int arg1, int arg2 ){ return arg1+arg2;}int function_sub( int arg1, int arg2 ){ return arg1-arg2;}
注意到兩個函式的原型與函式指標型別是一致的。以下是呼叫
fp_invoker = function_sum; // 直接用函式名賦值即可fp_invoker(1,2); // 呼叫時,可以認為函式指標便是函式名,此時呼叫加法fp_invoker = function_sub; // 同理,切換到減法fp_invoker(1,2); // 呼叫減法
以上都是直觀的用法,通常函式指標用於回撥,即下層函式先將函式指標內容儲存起來,處理結束後,再呼叫。此時要注意首先檢查函式指標內容是否為空。
if( fp_invoker ){ fp_invoker( arg1, arg2 );}
一般需要定義一個函式指標型別
typedef int (*function_pointer_t) ( int arg1, int arg2 );
然後,定義函式指標變數
function_pointer_t fp_invoker = 0;
函式指標可以動態改變內容,改變呼叫物件,假設有兩個函式
int function_sum( int arg1, int arg2 ){ return arg1+arg2;}int function_sub( int arg1, int arg2 ){ return arg1-arg2;}
注意到兩個函式的原型與函式指標型別是一致的。以下是呼叫
fp_invoker = function_sum; // 直接用函式名賦值即可fp_invoker(1,2); // 呼叫時,可以認為函式指標便是函式名,此時呼叫加法fp_invoker = function_sub; // 同理,切換到減法fp_invoker(1,2); // 呼叫減法
以上都是直觀的用法,通常函式指標用於回撥,即下層函式先將函式指標內容儲存起來,處理結束後,再呼叫。此時要注意首先檢查函式指標內容是否為空。
if( fp_invoker ){ fp_invoker( arg1, arg2 );}