頂層const與底層const

2021-08-03 12:55:29 字數 805 閱讀 1753

是否可修改所指向的物件              是否可通過指標修改物件的值     

頂層const :指標本身是常量。                                      否                                                是

底層const :指標所指的物件是常量。                           是                                                否

int a = 0;

const int b = 1;

const int *p1 = &a;  // 底層const        p1指向a              (int const *p1與const int *p1等效)  

*p1=0;           //錯誤。不能通過指標修改a的值

p1=&b;         //正確。能修改所指向的物件

int  *const p2 = &b; //頂層const         p2指向b

*p2=0;          //正確。能通過指標修改b的值

p2=&a;         //錯誤。不能修改所指向的物件

const  int  *const  p3=&b;   //p3指向b。左邊的const是底層const  →  不能通過指標p3修改b的值。右邊的const是頂層const  →  不能修改p3指向的物件。

const在 * 左邊,為底層const。指標所指的物件是常量。

const在 * 右邊,為頂層const。指標是常量。

頂層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型別的值。才不...

C 頂層const與底層const

1.頂層const 指代指標是乙個常量 2.底層const 指代指標指向的物件是乙個常量。int i 0 int const p1 i 不能改變p1的值,這是乙個頂層const,符合第一點 const int ci 42 不能改變ci的值,這是乙個頂層const,符合第二點 const int p2...