C 頂層const與底層const

2021-09-21 14:21:39 字數 844 閱讀 8790

1.頂層const:指代指標是乙個常量

2.底層const:指代指標指向的物件是乙個常量。

int i = 0;

int *const p1 = &i;//不能改變p1的值,這是乙個頂層const,符合第一點

const int ci = 42;//不能改變ci的值,這是乙個頂層const,符合第二點

const int *p2 = &ci;//允許改變p2的值,這是乙個底層const,符合第二點

const int *const p3 = p2;//靠右的const是頂層const,符合第一點;靠左的是底層const,符合第二點

const int &r = ci;//用於宣告引用的const都是底層const

//頂層const與底層const作用主要是拷貝方面,頂層const和底層const進行拷貝操作時有所不同。總的來說,頂層const常量一般不受影響,而底層const必須是拷入和拷出的物件必須具有相同的底層const,或者能夠進行資料轉換,常常是非常量可以轉換成常量

i = ci;//正確:拷貝ci的值,ci是乙個頂層const,對此操作無影響

p2 = p3;//正確:p2和p3指向的物件型別相同,p3頂層const的部分不影響

int *p = p3;//錯誤:p3包含底層const的定義,而p沒有

p2 = p3;//正確:p2和p3都是底層const

p2 = &i;//正確:int*能轉換成const int*

int &r = ci;//錯誤:普通的int&不能繫結到int常量上

const int &r2 = i;//正確:const int&可以繫結到乙個普通int上

頂層const與底層const

是否可修改所指向的物件 是否可通過指標修改物件的值 頂層const 指標本身是常量。否 是 底層const 指標所指的物件是常量。是 否 int a 0 const int b 1 const int p1 a 底層const p1指向a int const p1與const int p1等效 p1...

頂層const 底層const

頂層const top level const 表示指標 或引用等 本身是個常量。底層const low level const 表示指標指的物件是乙個常量。一般當說到頂層或底層const的時候都是指標或者引用型別的,因為普通型別的const只能是底層的。例如 const int i 0 i 表示是...

頂層const 底層const

頂層const 底層const 個人理解 頂層cosnt 就是不影響變數型別,作為修飾符的存在。底層則會影響到變數型別 例如 int pi 這是乙個int 型別的變數,乙個指向int型的指標。int const p1 這還是乙個int 型別的變數 首先p1是乙個指標型別,指向的是int型別的值。才不...