C 頂層const和底層const詳解

2021-09-13 15:18:19 字數 439 閱讀 9798

頂層const:用來標明乙個變數其本身是乙個不可更改的常量

底層const:用來標明乙個指標或引用所指向的物件是乙個不可更改常量

執行拷貝操作時,頂層const對於拷貝操作無影響

const int i = 1;

int m = i;//i具有頂層const對於拷貝操作無影響。

但是底層const不可忽略。執行拷貝操作時,拷入與拷出物件必須具有相同的底層const,或者兩物件的資料型別必須能夠轉換。一般來說,非常量可以轉換成常量,反之不行。

int i = 1;

const int *p = &i;//正確,非常量轉換為常量

int *q = p;//錯誤,常量不可轉換為非常量

const int *r = p;//正確,等號兩邊都具有底層const

C 頂層const和底層const

當我們定義指標和變數的時候,有時候希望定義成const型,就是不希望程式中改變自己定義的變數,一旦有 試圖改變定義好的const型的變數,在編譯的時候就會直接報錯。指標本身也是乙個變數物件,指標所指的變數也是乙個變數物件。當定義const int p i的時候是指標不可變還是變數i不可變呢?這就涉及...

C 頂層const和底層const

頂層const表示物件本身是乙個常量 底層const表示不能通過指標或引用改變所指向的物件 例如const int a 42 頂層const,不能改變a的值,int只能有頂層const 指標 int b 12 const int b1 b 底層const,不能通過b1改變a的值,可以理解為b1指向c...

頂層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...