程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C語言typedef與復雜函數聲明問題的深入解析

C語言typedef與復雜函數聲明問題的深入解析

編輯:更多關於編程
    以下是對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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved