C 頂層const和底層const

2021-10-05 16:32:12 字數 989 閱讀 4427

頂層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 表示的是指標所指的物件是乙...