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

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

詳述C++內置函數

2019-11-09 20:59:22
字體:
來源:轉載
供稿:網友

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

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

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

3.執行被調用函數中函數體的語句;

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

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

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

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

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

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

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

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

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

禁忌:內置函數中不能包括復雜的控制語句,如循環語句、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;

}


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

圖片精選

主站蜘蛛池模板: 凤山县| 阿克| 河北区| 体育| 曲阜市| 白朗县| 桃江县| 永福县| 梓潼县| 榆社县| 沙湾县| 台南县| 佛坪县| 大关县| 马尔康县| 文山县| 龙游县| 寿光市| 广河县| 建湖县| 夏津县| 邯郸县| 外汇| 纳雍县| 兴义市| 灵寿县| 莱芜市| 长子县| 迭部县| 江口县| 喀什市| 古浪县| 汪清县| 开原市| 安义县| 正蓝旗| 宽甸| 平度市| 宣武区| 营口市| 道真|