一、函數指針與指針函數
說明:
函數指針,即其本質是一個指針,它是一個指向函數的指針變量。
指針函數,即其本質是一個函數,傳回的是某一類型的指針。
值得注意的是:max函數的入口位址類型應該為:(int*)(int,int)。
輸出結果:
二、定義如下幾種類型變量
1、含有10個元素的指針數組
int *a[10];
2、數組指針
int *a=new int[10];
3、函數指針
void (*fn)(int,int);
4、指向函數的指針數組
int (*fnarray[10])(int,int);
三、函數指針數組
第5、6行,聲明兩個函數,有兩個int型形參,傳回值為int型。
第12行,定義一個函數指針數組,數組有兩個元素,都是函數指針,指向一個有兩個int型形參,傳回值為int型的函數。
第13、14行,數組的第一個指針op[0],指向add1函數入口,數組的第二個指針op[1],指向add2函數入口。
第15、16行,c++形式輸出,需要注意的是*op[0]需要加括号,表示一個函數指針,才能正确輸出,否則編譯出錯。
第17、18行,c形式輸出。
四、typedef用于函數指針定義
如下面程式:
typedef int(*pfun)(int x,int y); //定義了pfun類型,表示一個函數指針
int fun(int x,int y); //聲明一個函數
pfun p = fun; //定義一個pfun類型的函數指針p,并賦予了函數fun的入口位址,注意,這裡p前面沒有*
int ret = p(2,3); //利用p調用fun函數,注意,這裡p前面沒有*