常規函式和內聯函式呼叫過程如下圖:
cout << "說明引用變數在初始化後指向的位址成了常量(const)" << endl;
i = 3;
cout << "但儲存單元裡的值發生變化後,引用變數值跟著變化" << endl;
cout << "i = 3 後,pi值為" << endl;
cout << &pi << " " << pi << "(位址不變,值變化)"<
什麼時候建立臨時變數?
1,實參的型別正確,但不是左值;
2,實參的型別不正確,但可以轉換為正確的型別。
注:左值——可被引用的資料物件,eg:變數、陣列元素、結構成員、引用和解除引用的指標。
非左值——字面常量(用引號括起來的字串除外,他們有其位址表示)和包含多項式的表示式。
(在c中,左值最初為可出現在賦值語句左邊的實體(在引入const之前))
注:在函式中:如果接受引用引數的函式意圖是修改引數傳遞的變數,則建立臨時變數會組織引用引數的改變。
1,可避免無意中修改資料的程式設計錯誤
2,使函式能夠處理const和非const實參,否則只能接受非const資料
3,使函式能夠正確生成並使用臨時變數
注:當函式返回值為結構和類引用時,節省時間和記憶體
因為:傳統返回值將計算所得結果先複製到一位置,然後複製給呼叫。返回引用則直接使用別名訪問資料,節省了時間和記憶體!
C 內聯函式和引用變數
內聯函式和普通函式的使用方法沒有本質區別,我們來看乙個例子,下面展示了內聯函式的使用方法 include using namespace std 下面展示內聯函式的使用 inline double square doublex intmain 從上面我們可以看到我們定義乙個內聯函式只需要在普通函式的...
C 巨集和內聯函式
c 內聯函式 巨集 就是使用乙個字串來代替乙個表示式大媽或函式呼叫 編譯之前,預處理器會使用這個巨集字串所代表的表示式 或函式呼叫 來替換所有出現的巨集字串,這樣的話,用巨集表示的函式呼叫 就不用另外開闢函式棧,不用保護和恢復函式呼叫現場,這樣就提高了 的執行效率 所以,呼叫乙個巨集比呼叫乙個函式更...
C 內聯函式和巨集定義
預備知識 c c 編譯過程 step1 預處理 由預處理器 乙個簡單的程式 將程式設計師通過預處理器指令 參考部落格 c c 預處理器指令c c 預處理指令 定義好的模式代替源 中的模式。step2 第一遍編譯 對預處理過的 進行語法分析,編譯器把源 分解成小的單元並把它們按樹形結構組織起來。比如表...