應該將不需要修改的引用形參定義為const引用。普通的非const引用形參在使用時不太靈活。這樣的形參既不能用const物件初始化,也不能用字面值或者產生右值的表示式實參初始化,如下所示:
int incr(int &val)
int main()
理解返回引用至關重要的是:千萬不能返回區域性變數的引用。當然也千萬不能返回指向區域性變數的指標。例如:
const string &manip(const string&s)
引用和用來初始化引用的變數指向的是同一塊記憶體,因此通過引用或者變數可以改變同一塊記憶體中的內容。引用只是乙個別名,是乙個變數或物件的替換名字。引用的位址沒有任何意義,引用的位址就是它所引用的變數的位址。
指標是位址,指標變數要儲存位址值,因此要占用儲存空間,我們可以隨時修改指標變數所儲存的位址值,從而指向其他的記憶體。
定義引用時沒有初始化時錯誤的,引用一經初始化就始終指向同一特定物件(這就是為什麼引用必須在定義的時候初始化的原因)
關於指標常量和常量指標的區別
int a =3;
int b = 1;
int c = 2;
int const *p1 = &b;//const 在前,定義為常量指標
int *const p2 = &c;//*在前,定義為指標常量
常量指標p1:指向的位址可以變,但內容不可以重新賦值,內容的改變只能通過修改位址指向後變換。
p1 = &a是正確的,但 *p1 = a是錯誤的。
指標常量p2:指向的位址不可以重新賦值,但內容可以改變,必須初始化,位址跟隨一生。
p2= &a是錯誤的,而*p2 = a 是正確的。
引用,指標,常量引用,常量指標,指標常量的區別
1.指標 指標代表乙個變數的位址 例如 int a 2,b 1,pi a pi b 2.引用 引用即針對乙個變數的別名,引用必須被初始化,引用作為引數 形參 時,不會像指標一樣使用儲存單元,更不會像值傳遞一樣建立該引數的副本,提高空間 時間效率。例如 int a 2,b a 3.常量引用 格式為 c...
關於常量指標的引用
int main const int const p n 既然有指向指標的引用,就不難想到指向常量指標的引用。於是就有如下嘗試 const int r p 結果報錯如下 將 const int 型別的引用繫結到 const int const 型別的初始值設定項時,限定符被丟棄 也就是說由於頂層co...
指標和引用,const 指標和const 引用
指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...