C 學習,頂層const

2022-08-26 09:48:11 字數 727 閱讀 3933

頂層:指標本身就是乙個常量。

底層:指標所指的物件是乙個常量。

指標型別既可以指頂層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不可變呢?這就涉及...