亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語言

c++函數(shù)指針使用示例

時(shí)間:2024-07-26 14:47:15 C語言 我要投稿
  • 相關(guān)推薦

c++函數(shù)指針使用示例

  設(shè)計(jì)一個(gè)名為estimate()的函數(shù),估算編寫指定行數(shù)的代碼所需的時(shí)間,并且希望不同的程序員都可以使用該函數(shù)。以下是為大家分享的c++函數(shù)指針使用示例,供大家參考借鑒,歡迎瀏覽!

  需求

  假設(shè)要設(shè)計(jì)一個(gè)名為estimate()的函數(shù),估算編寫指定行數(shù)的代碼所需的時(shí)間,并且希望不同的程序員都可以使用該函數(shù)。

  對于所有的用戶來說,estimate()中一部分代碼都是相同的,但該函數(shù)允許每個(gè)程序員提供自己的算法來估算時(shí)間。

  為實(shí)現(xiàn)目標(biāo),采用的機(jī)制是,將程序員要使用的算法函數(shù)的地址傳遞給estimate()。

  實(shí)現(xiàn)代碼如下

  復(fù)制代碼 代碼如下:

  // funpointer.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。

  //

  #include "stdafx.h"

  #includedouble betsy(int);

  double pam(int);

  //estimate函數(shù)的第二個(gè)參數(shù)接受一個(gè)函數(shù)指針

  void estimate(int lines,double (*pf)(int));

  int _tmain(int argc, _TCHAR* argv[])

  {

  using namespace std;

  int code;

  cout<<"How many lines of code do you need?"<<endl;

  cin>>code;

  cout<<"Here's Betsy's estimate:"<<endl;

  estimate(code,betsy);

  cout<<"Here's Pam's estimate:"<<endl;

  estimate(code,pam);

  get);

  get);

  return 0;

  }

  inline double betsy(int lines){return 0.05*lines;}

  inline double pam(int lines){return 0.03*lines+0.004*lines*lines;}

  inline void estimate(int lines,double (*pf)(int))

  {

  using namespace std;

  cout<<lines<<" lines will take "<<(*pf)(lines)<<"hour(s)"<<endl;

  }

  運(yùn)行結(jié)果

  使用函數(shù)指針的好處

  以上設(shè)計(jì)有助于今后的程序開發(fā)。當(dāng)某個(gè)程序員為估算時(shí)間開發(fā)自己的算法時(shí),他將不需要重新編寫estimate()函數(shù)。相反,他只需要提供自己的函數(shù)地址,并保證該函數(shù)的參數(shù)和返回類型正確即可。

  函數(shù)指針使得程序員可以修改estimate()的行為,雖然他接觸不到estimate()的源代碼。

  內(nèi)聯(lián)函數(shù)

  由于函數(shù)實(shí)現(xiàn)的功能較簡單,所以可以使用內(nèi)聯(lián)函數(shù)來代替常規(guī)函數(shù)。

  要使用內(nèi)聯(lián)函數(shù)(C++的新特性,用于提高程序運(yùn)行速度),必須采取下述措施之一:

  在函數(shù)聲明前加上關(guān)鍵字inline

  在函數(shù)定義前加上關(guān)鍵字inline

  內(nèi)鏈函數(shù)的運(yùn)行速度比常規(guī)函數(shù)稍快,但代價(jià)是需要占用更多內(nèi)存。如果程序在10個(gè)不同的地方調(diào)用了同一個(gè)內(nèi)聯(lián)函數(shù),則改程序?qū)摵瘮?shù)代碼的10個(gè)副本,如下圖所示:

  什么情況下應(yīng)該考慮使用內(nèi)聯(lián)函數(shù)?

  函數(shù)代碼執(zhí)行時(shí)間很短

  如果使用C語言的宏執(zhí)行了類似函數(shù)的功能,應(yīng)考慮將他們轉(zhuǎn)換為C++內(nèi)聯(lián)函數(shù)

  注意:當(dāng)函數(shù)過大或函數(shù)遞歸 了,則編譯器可能不會(huì)將其視為內(nèi)聯(lián)函數(shù)對待。

【c++函數(shù)指針使用示例】相關(guān)文章:

C語言指針函數(shù)和函數(shù)指針詳解09-29

C++函數(shù)考點(diǎn)歸納09-30

C++調(diào)用C函數(shù)的方法05-21

C++如何調(diào)用matlab函數(shù)06-29

如何使用C語言數(shù)組指針09-14

linux網(wǎng)絡(luò)編程用到的網(wǎng)絡(luò)函數(shù)詳解和使用示例10-14

Swift與C語言指針結(jié)合使用實(shí)例09-21

指向結(jié)構(gòu)體類型數(shù)組的指針的使用08-05

c語言中指針的使用方法10-12

C語言中指針變量作為函數(shù)參數(shù)詳解07-01