是否可修改所指向的物件 是否可通過指標修改物件的值
頂層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...