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

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

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

2019-11-10 16:51:05
字體:
供稿:網(wǎng)友

調(diào)用函數(shù)時(shí)需要一定的時(shí)間和空間的消耗,一般的程序調(diào)用函數(shù)時(shí)的過程: 1.執(zhí)行函數(shù)中調(diào)用前的語句; 2.轉(zhuǎn)移到被調(diào)用函數(shù)的入口處,同時(shí)進(jìn)行參數(shù)傳遞; 3.執(zhí)行被調(diào)用的函數(shù); 4.帶回被調(diào)用函數(shù)的返回值; 5.接著執(zhí)行主調(diào)函數(shù)中未執(zhí)行的語句。

這樣就要求在轉(zhuǎn)去被調(diào)用函數(shù)之前,要記下當(dāng)時(shí)執(zhí)行的指令的地址和其他相關(guān)信息,一遍在函數(shù)調(diào)用之后繼續(xù)執(zhí)行。在函數(shù)調(diào)用之后,流程返回到先前記下的地址處,并且根據(jù)之前記錄的信息恢復(fù)現(xiàn)場,才能繼續(xù)執(zhí)行。這些都要花費(fèi)一定的時(shí)間。如果有的函數(shù)需要頻繁使用,則所需要的時(shí)間就會(huì)很長,從而降低程序的執(zhí)行效率。

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

指定一個(gè)函數(shù)為內(nèi)置函數(shù),只需在函數(shù)首行的左端加一個(gè)關(guān)鍵詞inline即可。

#include <iostream>using namespace std;inline int max(int,int,int);int main(){ int i = 10,j = 20,k = 30,m; m =max(i,j,k); cout<<"max ="<<m<<endl; getchar(); return 0;}inline int max(int a,int b,int c){ if(b>a) a=b; if(c>a) a=c; return a;}

在上述程序中,在聲明和定義函數(shù)max時(shí),都在左端加了關(guān)鍵詞inline,因此編譯系統(tǒng)遇到函數(shù)調(diào)用時(shí),就會(huì)用max函數(shù)體的代碼替換函數(shù)調(diào)用處的語句,在上述程序中就是16-18行代替了第8行進(jìn)行編譯,同時(shí)將實(shí)參代替形參。

需要注意的是:可以在聲明和定義函數(shù)時(shí)同時(shí)寫inline,也可以只在函數(shù)聲明時(shí)加inline,這樣編譯系統(tǒng)也會(huì)把函數(shù)作為內(nèi)置函數(shù)處理。

使用內(nèi)置函數(shù)可以節(jié)約運(yùn)行時(shí)間,但是會(huì)增加目標(biāo)程序的長度,所以作為內(nèi)置函數(shù)的函數(shù)規(guī)模都很小(一般都在5句以下)。同時(shí)內(nèi)置函數(shù)中不能包括復(fù)雜的控制語句,如循環(huán)語句和switch語句。總的來說,哪些規(guī)模比較小而又被頻繁調(diào)用的簡單函數(shù),比較適合聲明為內(nèi)置函數(shù)。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 陇川县| 象州县| 衢州市| 团风县| 察哈| 蒲城县| 平和县| 淮安市| 富平县| 安顺市| 繁昌县| 林州市| 扎囊县| 六枝特区| 灯塔市| 固镇县| 丰宁| 延安市| 苍南县| 新昌县| 茶陵县| 文登市| 青岛市| 原平市| 买车| 德昌县| 汤阴县| 满洲里市| 滁州市| 宁陵县| 博罗县| 民勤县| 吉林省| 杭锦旗| 上林县| 宁国市| 澄迈县| 洞头县| 永丰县| 榆林市| 丁青县|