函式呼叫需要建立棧記憶體環境,進行引數傳遞,並產生程式執行轉移,這些工作都需要時間開銷,有些函式使用頻率高,但**卻很短,因此c++提供了inline函式,減少函式呼叫的成本。
內聯函式的函式體限制:內聯函式中,不能含有複雜的結構體控制語句,如switch和while等。如果內聯函式有這些語句,則編譯將該函式視同普通函式那樣將產生函式呼叫**。遞迴函式也不能視為內聯函式。
inline
intmax
(int a,
int b)
intmain()
內聯函式與巨集定義區別:
①巨集定義可以代替小函式定義,但有缺陷;
②巨集只告訴編譯器簡單的替換,不檢查引數型別;
③巨集的作用可以用內聯函式代替。
預設引數的函式:呼叫函式時可以不指定全部引數,為可以不指定的引數提供預設值。
例如:
int
add(
int x=5,
int y=6,
int z=3)
;int
main()
預設引數的順序規定:如果乙個函式中有多個預設引數,則形參分布預設引數應從右至左逐漸定義,當呼叫函式時,只能向左匹配引數。
例如:
void
func
(int a=1,
int b,
int c=3,
int d=4)
;//error
void
func
(int a,
int b=2,
int c=3,
int d=4)
;//ok
//對第二個函式呼叫時
func(10
,15,20
,25);
//ok,呼叫給出了所有引數
func()
;//error,引數a沒有預設值
func(10
,15);
//ok,引數c,d採用預設值
func(2
,10,,
5);//error,只能從右到左順序匹配引數
學習筆記 C 內聯函式
對於乙個頻繁使用的短小函式,在c語言中應該用巨集定義實現,在c 中用inline實現。巨集定義與內聯函式的不同用法000。在c語言中,寫一手漂亮的巨集定義是非常有必要的,方式出錯 提高 的移植性和可讀性等。尤其是一些常用或通用的功能函式或者 段,這些功能既可以寫成函式,也可以封裝為巨集定義。就功能性...
c 學習筆記 內聯函式(inline)
在c 中呼叫函式時,電腦要做很多事 呼叫前要先儲存暫存器,並在返回時恢復 而且還有實參到形參的傳值 如果乙個函式在原始碼中多次被呼叫,這樣就會很浪費計算機的資源,但是如果我們將這個函式宣告為內聯函式,就可不必有這樣的擔心了。例如這樣乙個函式 int max int x,int y return x ...
C 學習筆記(八) 內聯函式
內聯函式 內聯函式實際上並不是真正的函式,它比較像define巨集定義,它實際上就是將 段直接替換到呼叫函式的地方,從而實現時間的節約。使用 主要用在 較短的函式中,同時不能用在遞迴函式中。在函式最前面加上inline就是內聯函式了 inline函式的本質也是用空間換取時間的一種操作 例子程式 in...