国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

詳述C++內(nèi)置函數(shù)

2019-11-09 20:25:30
字體:
供稿:網(wǎng)友

    調(diào)用函數(shù)時需要一定的時間和空間的開銷。函數(shù)調(diào)用過程如下:

1.程序先執(zhí)行函數(shù)調(diào)用之前的語句;

2.調(diào)用函數(shù),流程控制轉(zhuǎn)移到被調(diào)用函數(shù)的入口處,同時進行參數(shù)傳遞;

3.執(zhí)行被調(diào)用函數(shù)中函數(shù)體的語句;

4.流程返回調(diào)用函數(shù)的下一條指令處,將函數(shù)返回值帶回;

5.接著執(zhí)行主調(diào)函數(shù)中未執(zhí)行的語句。

    這樣就要求在轉(zhuǎn)到被調(diào)用函數(shù)之前,需要動態(tài)分配內(nèi)存(動態(tài)存儲區(qū)),記下當時執(zhí)行的指令地址,還要“保護現(xiàn)場”(記下當時有關信息),以便在函數(shù)調(diào)用之后繼續(xù)執(zhí)行。函數(shù)調(diào)用之后,流程返回到當前記下的地址,并且根據(jù)記下的信息進行“恢復現(xiàn)場”,然后繼續(xù)執(zhí)行,這都需要花費一定時間。如果有的函數(shù)需要頻繁調(diào)用,則所用時間會很長,從而降低程序執(zhí)行效率。有些程序?qū)π适怯幸蟮模笙到y(tǒng)的響應時間短,這就希望盡量壓縮時間的開銷。

   C++提供一種提高效率的方法,即在編譯時將所調(diào)用函數(shù)的代碼直接嵌入到主調(diào)函數(shù)中,而不是將流程轉(zhuǎn)出去。這種嵌入到主調(diào)函數(shù)中的函數(shù)稱為內(nèi)置函數(shù)(內(nèi)聯(lián)函數(shù))。

    定義方法:只需在函數(shù)左邊加一個關鍵字inline即可。

例如:inline int max(int, int, int )

    注意:可以在聲明函數(shù)和定義函數(shù)時同時使用inline,也可以在其中一處聲明inline,效果相同,都能按內(nèi)置函數(shù)處理。

     說明:使用內(nèi)置函數(shù)可以節(jié)省運行時間,但是卻增加了目標程序的長度。因此,一般只將規(guī)模很小而使用頻繁的函數(shù)(如定時采集數(shù)據(jù)的函數(shù))聲明為內(nèi)置函數(shù)。在函數(shù)規(guī)模很小情況下,函數(shù)調(diào)用的時間開銷可能相當于甚至超過執(zhí)行函數(shù)本身的時間,把它定義為內(nèi)置函數(shù),可大大減少程序運行時間。

說明:對函數(shù)作inline聲明,只是程序設計者對編譯系統(tǒng)提出的一個建議,也就是說它是建議性的,而非指令性的。編譯系統(tǒng)會根據(jù)具體情況決定是否這樣做。

禁忌:內(nèi)置函數(shù)中不能包括復雜的控制語句,如循環(huán)語句、switch語句。

inline intmax(int,int, int);//聲明內(nèi)置函數(shù),左端inline

int main()

{

    int i = 3, j = 5, k =8, m;

    m = max(i, j, k);/*max函數(shù)體的代碼替換  m = max(i, j, k),同時形參代替實參

                     則 m = max(i, j, k)被替換為

                           if(j>i); i=j

                           if(k>i); i=k

                            m=i;*/

    cout << "max=" << m = endl;

    return 0;

}

 

inline intmax(int a,int b, int c);//定義max為內(nèi)置函數(shù)

{

    if (b > a)

        a = b;

    if (c > a)

        a = c;

    return a;

}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 调兵山市| 东乡族自治县| 隆回县| 武清区| 周口市| 东宁县| 贵定县| 凉城县| 平阴县| 蒙山县| 门头沟区| 宜章县| 金塔县| 静海县| 清苑县| 新郑市| 丰镇市| 名山县| 那坡县| 肇州县| 楚雄市| 塔河县| 米易县| 徐汇区| 石阡县| 故城县| 卢龙县| 泰来县| 济源市| 鞍山市| 泰顺县| 三明市| 河西区| 晋宁县| 怀集县| 辽源市| 成都市| 日土县| 庐江县| 万宁市| 河南省|