內聯函數也稱內嵌函數,它主要解決程序的運行效率。
#####################問題#########################################
函數調用需要建立棧內存環境,進行參數傳遞,並產生程序執行轉移,這些轉移都需要時間開銷。
有些函數在程序中使用率較高,但代碼卻很短。
我們可以在程序當中用表達式替換函數調用,但是降低了函數的可讀性。
######################解決方法#################################################
使用內聯函數
內聯函數必須在被調用前聲明或定義。因為內聯函數的代碼必須在被替換之前已經聲稱被替換的代碼。
注意:
1.在內聯函數內不允許用循環語句和開關語句。遞歸函數是不能用來做內聯函數的。
2.內聯函數的定義必須出現在內聯函數第一次被調用之前。
3.內聯函數只適合於1-5行的小函數。對於一個含有很多語句的大函數,函數調用和返回的開銷相對來說是微不足道的。
#include <iostream.h>
inline int isnumber(char); // inline 函數聲名
void main()
{
char c;
while((c=cin.getc())!= '\n ')
{
if( isnumber(c) ) //調用一個小函數
cout < < "you entered a digit \n ";
else
cout < < "you entered a non-digit \n ";
}
}
int isnumber (char ch) //此處無inline,視為inline
{
return (ch> = '0 '&& ch <= '9 ')?1:0;
}