函數指針:
函數名就是函數操作代碼在內存中的起始地址,就像數組名是數組在內存中的起始地址。
所以使用函數指針時,直接傳入函數名就什么了。函數指針也是C中實現多態的一種方法。
int x2(int x) { return x * x;}
int x3(int x) {return x * x * x;}
void func(int (*pf)(int), int x) { cout << pf(x) << endl;}
== void func(int (*pf)(int), int x) { cout << (*pf)(x) << endl;}
func(x2, 4); // 16
func(x3, 4); // 64
void *func(int* (*pf)(int*, const int**, float, char * const), double *); // 呵呵,頭暈吧
void (*pf[10])(int); // 表示pf是10個函數指針的數組
函數指針的一個用法是建立一個菜單驅動程序:
用戶從菜單中選擇一個選項,每個選項由不同的函數提供服務,每個函數的指針存放在函數指針數組中。用戶選項作為數組下標,數組中的指針用于調用這個函數。
void (*pf[3])(int) = {func1, func2, func3};