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

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

C++ 內置函數

2019-11-10 16:58:36
字體:
來源:轉載
供稿:網友

調用函數時需要一定的時間和空間的消耗,一般的程序調用函數時的過程: 1.執行函數中調用前的語句; 2.轉移到被調用函數的入口處,同時進行參數傳遞; 3.執行被調用的函數; 4.帶回被調用函數的返回值; 5.接著執行主調函數中未執行的語句。

這樣就要求在轉去被調用函數之前,要記下當時執行的指令的地址和其他相關信息,一遍在函數調用之后繼續執行。在函數調用之后,流程返回到先前記下的地址處,并且根據之前記錄的信息恢復現場,才能繼續執行。這些都要花費一定的時間。如果有的函數需要頻繁使用,則所需要的時間就會很長,從而降低程序的執行效率。

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

指定一個函數為內置函數,只需在函數首行的左端加一個關鍵詞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;}

在上述程序中,在聲明和定義函數max時,都在左端加了關鍵詞inline,因此編譯系統遇到函數調用時,就會用max函數體的代碼替換函數調用處的語句,在上述程序中就是16-18行代替了第8行進行編譯,同時將實參代替形參。

需要注意的是:可以在聲明和定義函數時同時寫inline,也可以只在函數聲明時加inline,這樣編譯系統也會把函數作為內置函數處理。

使用內置函數可以節約運行時間,但是會增加目標程序的長度,所以作為內置函數的函數規模都很小(一般都在5句以下)。同時內置函數中不能包括復雜的控制語句,如循環語句和switch語句。總的來說,哪些規模比較小而又被頻繁調用的簡單函數,比較適合聲明為內置函數。


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

圖片精選

主站蜘蛛池模板: 金坛市| 张北县| 亚东县| 称多县| 华蓥市| 桃源县| 宝丰县| 梁河县| 琼结县| 综艺| 建湖县| 隆回县| 宁津县| 芜湖县| 宜城市| 万源市| 镶黄旗| 和田县| 威宁| 阿拉善盟| 社旗县| 嵊州市| 洞头县| 邮箱| 麻江县| 乌拉特后旗| 阿拉善右旗| 新兴县| 长子县| 香河县| 蓬溪县| 德兴市| 陆川县| 合川市| 泸州市| 大余县| 托克逊县| 郁南县| 郁南县| 兴国县| 西平县|