頂層:指標本身就是乙個常量。
底層:指標所指的物件是乙個常量。
指標型別既可以指頂層const,也可以是底層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
cosnt int &r = ci; //用於宣告引用的const都是底層const
當執行拷貝操作時,頂層const不收影響,底層const的限制很多
int *p = p3; //錯誤,p3包含底層const的定義,而p沒有
p2 = p3; //正確,p2和p3都是底層cnost
p2 = &i; //正確, int*能轉換成 const int *
int &r = ci; //錯誤,普通的int&不能繫結到int 變數上
const int &r2 = i; //正確,const int &可以繫結到乙個普通int上
p3既是頂層const也是底層const,拷貝p3時可以不在乎它是乙個頂層const,但是必須清楚它指向的物件得是乙個常量。
C 頂層const,頂層const,引用總結
頂層 const 表示的是指標本身是乙個常量,底層const 表示的是指標所指的物件是乙個常量。頂層const拷貝遵守原則 1.const常量不能改變。2.頂層可忽略。const int a 12 int b a 頂層忽略3 非常量可向常量轉換,const int c b 底層const拷貝,則要求...
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...
C 頂層const和底層const
當我們定義指標和變數的時候,有時候希望定義成const型,就是不希望程式中改變自己定義的變數,一旦有 試圖改變定義好的const型的變數,在編譯的時候就會直接報錯。指標本身也是乙個變數物件,指標所指的變數也是乙個變數物件。當定義const int p i的時候是指標不可變還是變數i不可變呢?這就涉及...