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

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

C++ 內置函數

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

調用函數時需要一定的時間和空間的消耗,一般的程序調用函數時的過程: 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語句。總的來說,哪些規模比較小而又被頻繁調用的簡單函數,比較適合聲明為內置函數。


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

圖片精選

主站蜘蛛池模板: 西贡区| 永平县| 塔河县| 德清县| 栖霞市| 武隆县| 昭平县| 沛县| 繁峙县| 盖州市| 阜阳市| 湟源县| 邵东县| 汝阳县| 公主岭市| 金华市| 贡觉县| 靖江市| 崇左市| 黔西| 虞城县| 江口县| 天镇县| 青河县| 鸡西市| 临漳县| 安徽省| 保康县| 菏泽市| 荆门市| 和林格尔县| 枣阳市| 东辽县| 南宫市| 那曲县| 葫芦岛市| 锦屏县| 杭锦后旗| 屯昌县| 平果县| 象州县|