c 基礎學習筆記 內聯函式(inline)

2021-10-02 02:00:27 字數 1113 閱讀 6650

函式呼叫需要建立棧記憶體環境,進行引數傳遞,並產生程式執行轉移,這些工作都需要時間開銷,有些函式使用頻率高,但**卻很短,因此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...