頂層const表示物件本身是乙個常量
底層const表示不能通過指標或引用改變所指向的物件
例如
const
int a =42;
//頂層const,不能改變a的值,int只能有頂層const
//--------------------------指標------------------------------
int b =12;
const
int* b1 =
&b;//底層const,不能通過b1改變a的值,可以理解為b1指向const int
int*
const b2 =
&b;//頂層const,b2的值本身不能改變,即不能指向其他物件
//--------------------------引用------------------------------
const
int& c = a;
//底層const,不能通過引用改變a的值,用於宣告引用的const都是底層const
第乙個要注意的是
//對於乙個常量只能用指向const的指標指向它
int* b3 =
&a;//錯誤
//對於乙個常量也只能進行常量引用
int& c2 =3;
//錯誤
int& c2 =
3* b;
//錯誤
第二個要注意的是
//頂層const在宣告是必須初始化
const
int a;//錯誤
int*
const b2;
//錯誤
const
int* b1;
b1 =
&b;//可以
//當然引用在宣告是也必須初始化
const
int& c;
// 錯誤
C 頂層const和底層const
當我們定義指標和變數的時候,有時候希望定義成const型,就是不希望程式中改變自己定義的變數,一旦有 試圖改變定義好的const型的變數,在編譯的時候就會直接報錯。指標本身也是乙個變數物件,指標所指的變數也是乙個變數物件。當定義const int p i的時候是指標不可變還是變數i不可變呢?這就涉及...
頂層const和底層const
頂層const 本身是乙個常量 底層const 所指的物件是乙個常量 int const p1 i const修飾p1,p1本身是乙個const,所以這個const是頂層const const int ci 42 const修飾ci,ci本身是乙個const,頂層 const int p2 ci c...
頂層const和底層const
1.頂層 const 與底層 const概念 指標本身是乙個物件,因為,指標實際對應著記憶體單元的一段儲存空間,然而,指標所指向的也是乙個資料物件,因此,指標是乙個常量與指標所指向的是乙個常量是兩個完全不同的概念,頂層 const表示的是指標本身是乙個常量,底層const 表示的是指標所指的物件是乙...