指針不僅可以用來指向基本類型的數據,還可以指向函數。如果我們有了函數指針,這樣就可以將其作為參數傳遞給其它函數。其應用之一是回調函數。 函數指針的聲明原型(Declaration Prototype) typename (*pointer_name)(parameters...) 既然指針是指向一個具體函數的,那麼假設有一個簡單的加法函數: [cpp] int add(int a, int b) { return a + b; } 該函數很簡單,接受兩個整形參數,然後返回兩個整數之和。 下面聲明一個函數指針: [cpp] int (*foo)(int,int); 簡單點來說,該聲明和函數聲明基本類似,只不過函數名前需要加上星號(*),並帶上括號。另外需要注意的是,該函數指針聲明的返回類型以及參數個數和參數類型要一一對應,函數指針名只要為合法的標識符即可,這裡為foo。 下面初始化函數指針: [cpp] foo = add; //或者 foo = &add; 使用指針函數: [cpp] //普通函數調用 printf("%d \n",add(1,2)); //通過指針函數調用 printf("%d \n",foo(1,2)); //或者 printf("%d \n",(*foo)(1,2)); 將函數指針變量作為參數傳遞給另外一個函數。 [cpp] #include <stdio.h> void pay() { printf("paying 1$\n"); } void got(void(*func_p_para)(),char * goods) { func_p_para(); //調用 printf("buy %s",goods); } int main() { void (*foo)(); foo = pay; got(foo,"1T Memmory"); } Over...