引用是已定義的變數的別名,主要用途是用作函式的形參。通過將引用變數作為形參可以直接使用原始資料而不是新建乙個副本。
必須在宣告引用變數的時候進行初始化
int rat;
int & rodent;
rodent = rat; //不可以這樣做!
而應該這樣
int rat;
int & rodent = rat; //正確!
比較下面交換變數值的方法:
include//使用引用變數作為引數
void swap_a (int &a,int &b)
//使用指標作為引數
void swap_b(int *p,int *q)
//使用值作為引數
void swap_c(int m,int n)
int main()
結果為:
a=2,b=1
a=2,b=1
a=1,b=2
所以引用和指標都可以成功交換兩變數的值,按值傳遞不能交換。
檢視如下**:
//返回引數的乙個複製體
const stru & clone (stru & s)
當函式執行結束後,臨時變數newstru的記憶體單元將會被釋放,執行這段**會出現編譯警告,執行時會出現編譯錯誤。
為避免這樣的問題,可以返回乙個作為引數傳遞給函式的引用,即
//返回引數的乙個複製體
const stru & clone (stru & s)
另一種方法是使用指標,即:
//返回引數的乙個複製體
const stru & clone (stru & s)
1. 使用引用引數的主要原因有兩個:
(1)程式設計師能夠修改呼叫函式中的資料物件;
(2)通過傳遞引用而不是整個資料物件,可以提高程式的執行速度;
2. 對於使用傳遞的值而不作修改的函式:
(1)如果資料物件很小,如內建資料型別或者小型結構,則按值傳遞;
(2)如果資料物件是陣列,則使用指標。這是唯一的選擇,並宣告為const的指標;
(3)如果資料物件是較大的結構,則使用const指標或const引用,以提高程式的效率。這樣可以節省複製結構所需的時間和空間;
(4)如果資料物件是類物件,則使用const引用。類設計的語義常常要求使用引用。因此,傳遞類物件引數的標準方式是按引用傳遞。
3. 對於修改函式中的資料的函式:
(1)如果資料物件是內建資料型別,則使用指標。如果看到諸如change(&x)這樣的**,則傳遞的是x的位址,函式將修改x的值;
(2)如果資料物件是陣列,則只能使用指標;
(3)如果資料物件是結構體,則使用引用或指標;
(4)如果資料物件是類物件,則使用引用。
C 函式新特性
1.函式的預設引數 函式可以有預設引數,你在呼叫的時候,如果不給函式引數賦值,函式將按照預設值執行 2.過載函式 函式可以過載,也就是函式名稱可以一樣,只是返回型別以及引數型別,數目不同。函式被呼叫的時候,系統會根據引數來匹配到相應的函式。3.內聯函式 申明時候加上inline,省去了函式傳遞的過程...
C 新特性 引用計數
智慧型指標 問題 c 中最令人頭疼的問題就是強迫程式設計師對申請的資源進行管理,容易記憶體洩漏 c 需要自己管理堆記憶體的申請和釋放 int p new int 解決思路 利用c 中乙個物件出了其作用域會被自動析構,因此我們只需要在建構函式的 時候申請空間,而在析構函式的時候釋放空間,這樣就減輕程式...
C 新特性(建構函式 析構函式 常型別)
建構函式 是在建立物件時,用來給物件進行初始化的函式,即設定初始值,被稱為建構函式 宣告為 class 類名 cshoes cshoes int cshoes getsize int main cshoes cshoes cshoes cshoes int s,char strcolor int c...