SOGO論壇
  登入   註冊   找回密碼
查看: 697|回覆: 0
列印 上一主題 下一主題

[技術文章] 函數的函數參數 [複製連結]

Rank: 3Rank: 3

狀態︰ 離線
跳轉到指定樓層
1
發表於 2012-7-23 08:46:25 |只看該作者 |倒序瀏覽
函數 亦可 當作 另一個函數 的引數, 其說明 如下。
設 一 rectangle 資料型態 如第 7 章所宣告的

        struct rectangle{
             struct point topLeft, bottomRight;
        };

設有一函數用以計算一長方形面頂積和下:
        int RectArea( struct rectangle *R)
        { return (R->bottomRight.x-R->topLeft.x)*
                 (R->bottomRight.y-R->topLeft.y);
        }

又有一函數 ComputeArea 用以計算不同圖形的面積,其定義如下:
        int ComputeArea ( void *R, int(*fp)( void*))
        { return fp(R);}

其中 R 為一指標,可用來指向一圖形,
fp 為一 函數 指標,用來 代表 一函數, fp 有一 指標參數 void * 且 return int。
註: 函數名稱 如同 陣列名稱, 可用來表一地址。

設一主程式如下:

    main()
    { struct rectangle R={(0,0),(5,6)};
     
      printf("The area of a rectangle R with top left point (%d,%d)
              and bottom right point (%d,%d) is %d\n",
              R.topLeft.x, R.topLeft.y, R.bottomRight.x, R.bottomRight.y,
              ComputeArea(&R, RectArea));
    }

執行該程式的結應為
      The area of a rectangle R with top left point (0,0) and
      bottom right point (5,6) is 30

喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2025-3-11 16:55

© 2004-2025 SOGO論壇 OURSOGO.COM
回頂部