函數(shù)指針:
函數(shù)名就是函數(shù)操作代碼在內(nèi)存中的起始地址,就像數(shù)組名是數(shù)組在內(nèi)存中的起始地址。
所以使用函數(shù)指針時,直接傳入函數(shù)名就什么了。函數(shù)指針也是C中實(shí)現(xiàn)多態(tài)的一種方法。
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個函數(shù)指針的數(shù)組
函數(shù)指針的一個用法是建立一個菜單驅(qū)動程序:
用戶從菜單中選擇一個選項(xiàng),每個選項(xiàng)由不同的函數(shù)提供服務(wù),每個函數(shù)的指針存放在函數(shù)指針數(shù)組中。用戶選項(xiàng)作為數(shù)組下標(biāo),數(shù)組中的指針用于調(diào)用這個函數(shù)。
void (*pf[3])(int) = {func1, func2, func3};