C語言typedef與複雜函式宣告問題的深入解析

來源:互聯網
上載者:User

以下是對C語言中的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

>3. doube(*)() (*pa)[9];
//首先為上面運算式紅色部分聲明一個新類型
typedef double(*pFun)();
//整體聲明一個新類型
typedef pFun (*pFunParam)[9];
//使用定義的新類型來聲明對象,等價於doube(*)() (*pa)[9];
pFunParam pa;

pa是個指標,指標指向一個含有9個元素的數組,數組的元素是一個函數指標,函數指標所指函數沒有輸入參數,傳回值為double

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.