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

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

詳述C++內置函數

2019-11-09 21:17:09
字體:
來源:轉載
供稿:網友

    調用函數時需要一定的時間和空間的開銷。函數調用過程如下:

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

2.調用函數,流程控制轉移到被調用函數的入口處,同時進行參數傳遞;

3.執(zhí)行被調用函數中函數體的語句;

4.流程返回調用函數的下一條指令處,將函數返回值帶回;

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

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

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

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

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

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

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

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

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

inline intmax(int,int, int);//聲明內置函數,左端inline

int main()

{

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

    m = max(i, j, k);/*max函數體的代碼替換  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為內置函數

{

    if (b > a)

        a = b;

    if (c > a)

        a = c;

    return a;

}


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

圖片精選

主站蜘蛛池模板: 察哈| 海丰县| 准格尔旗| 桂林市| 盈江县| 阿鲁科尔沁旗| 伊春市| 定结县| 拜城县| 海淀区| 江安县| 德兴市| 泸水县| 林芝县| 九龙城区| 桐庐县| 仁化县| 卫辉市| 龙川县| 岫岩| 通城县| 枞阳县| 大兴区| 堆龙德庆县| 博乐市| 柳江县| 叙永县| 海宁市| 克山县| 公安县| 广饶县| 仁化县| 巩义市| 太和县| 贵南县| 巴塘县| 开原市| 天柱县| 杨浦区| 平湖市| 桐柏县|