int main()
; const int * const p = n;
//既然有指向指標的引用,就不難想到指向常量指標的引用。
//於是就有如下嘗試
//const int * (&r) = p;
//結果報錯如下
//將 "const int *&" 型別的引用繫結到 "const int *const" 型別的初始值設定項時,限定符被丟棄
//也就是說由於頂層const被拋棄 賦予r的為 const int *型別的指標 由於引用可以改變指向物件的值,所以宣告報錯
//這時候就想到了const_cast型別轉換了 我們加上後**如下
const int * (&r) = const_cast(p);
std::cout << *r<<" ";
r += 1;
std::cout << *r<<" " ;
//輸出**如下:3 4
//也就是說使用指向 const * const 型別的指標 的引用的時候會丟失掉指標的const 這使得我們可以改變指標引用的值(指標指向的位址)。
//這就使得源指標p的值發生了改變!!! 這很不安全!!! 所以不要使用引用來返回介面物件!!!
std::cout << *p << " ";
return 0;
}
引用,指標,常量引用,常量指標,指標常量的區別
1.指標 指標代表乙個變數的位址 例如 int a 2,b 1,pi a pi b 2.引用 引用即針對乙個變數的別名,引用必須被初始化,引用作為引數 形參 時,不會像指標一樣使用儲存單元,更不會像值傳遞一樣建立該引數的副本,提高空間 時間效率。例如 int a 2,b a 3.常量引用 格式為 c...
關於const引用 常量指標 指標常量的一些知識
應該將不需要修改的引用形參定義為const引用。普通的非const引用形參在使用時不太靈活。這樣的形參既不能用const物件初始化,也不能用字面值或者產生右值的表示式實參初始化,如下所示 int incr int val int main 理解返回引用至關重要的是 千萬不能返回區域性變數的引用。當然...
C Primer 引用 指標 常量
定義引用時,程式把引用和它的初始值繫結在一起,而不是把初始值拷貝給引用。一旦初始化完成,引用將和它的初始值物件一直繫結在一起,因此無法讓引用繫結另乙個物件,所以引用必須初始化。所有引用的型別都必須要和與之繫結的物件嚴格匹配,而且引用只能繫結在物件上,而不能和字面值或表示式的結果繫結在一起,以下兩種情...