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