內聯inline函式和引用

2021-10-08 16:45:52 字數 780 閱讀 1258

inline函式:函式呼叫點**直接展開(文字替換) 沒了開棧和清棧的開銷,效率高

inline int sum(int a,int b)

return a+b;

1.inline 函式和普通函式的區別:

inline函式只能在本檔案可見

2.inline函式和static修飾的函式的區別:有呼叫函式的開銷

static會在符號表裡把global符號-->local函式

3.inline函式和巨集的區別:

inline 編譯 安全檢查機制,型別檢查

巨集   預編譯  無安全檢查機制

4.為什麼不把所有函式預設為內聯?

inline 以**膨脹為代價--->空間換時間 -->過度--.>空間消耗,效率降低

建議:函式體執行的開銷》函式開棧和清棧的開銷,不建議

inline特徵:

1.inline 寫在.**件(本檔案可見)

2.inline 只在 release版本生效

3.inline只是給編譯器的乙個建議  (遞迴,迴圈 編譯器不設inline)

4.inline是基於實現的,不是基於宣告的

引用-->別名

int main()

int a=10;

int &b=a;

return 0;

底層實現--->以指標的方式來實現的

引用的特點:

1.初始化

2.引用不能改變

3.引用是不能引用取位址的資料

4.引用變數只能使用所引用的記憶體單元

inline 內聯函式

一 inline關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義。表示式形式的巨集定義一例 define expressionname var1,var2 var1 var2 var1 var2 為什麼要取代這種形式呢,且聽我道來 1 首先談一下在c中使用這種形式巨...

inline內聯函式

技術類筆試題50 都會問巨集與inline的區別,自己去找找看?1 巨集替換發生在預編譯 2 巨集函式 如果可以這麼叫的話 替換時不會檢查引數,inline函式會檢查 3 巨集一定會發生替換,inline貌似不是強制的,編譯器想不替換也沒關係 4 巨集替換時存在著一些不可避免的陷阱 參見c trap...

inline內聯函式

一 內聯函式 內聯函式是指用inline關鍵字修飾的函式 它與普通函式所不同之處只在於函式呼叫的處理。普通 函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中 內聯函式不是在呼叫時發生執行權轉移,而是在編譯時將 函式 體 嵌入在每乙個呼叫處。編譯時類似巨集替換,使用 函式體替...