1. 程式人生 > >typedef 複雜函式指標

typedef 複雜函式指標

下面是三個變數的宣告,我想使用typedef分別給它們定義一個別名,請問該如何做?
>1:int *(*a[5])(int, char*);
>2:void (*b[10]) (void (*)());
>3. doube(*)() (*pa)[9];
答案與分析:
對複雜變數建立一個類型別名的方法很簡單,你只要在傳統的變數宣告表示式裡用型別名替代變數名,然後把關鍵字typedef加在該語句的開頭就行了。

>1:int *(*a[5])(int, char*);
//pFun是我們建的一個類型別名
typedef int *(*pFun)(int, char*);
//使用定義的新型別來宣告物件,等價於int* (*a[5])(int, char*);
pFun a[5];
a是一個包含5個元素的陣列,陣列的元素是函式指標,該函式指標所指函式的的返回值是指向int型別的指標,輸入引數有兩個,第一個是int,第二個是char*

>2:void (*b[10]) (void (*)());
//首先為上面表示式紅色部分宣告一個新型別
typedef void (*pFunParam)();
//整體宣告一個新型別
typedef void (*pFun)(pFunParam);
//使用定義的新型別來宣告物件,等價於void (*b[10]) (void (*)());
pFun b[10];
b是一個含有10個元素的陣列,每個元素都是一個函式指標,該函式指標所指的函式的返回值為void,輸入引數為另一個函式指標,這個函式指標沒有輸入引數,返回值為void