const修飾符(C 11標準)

2021-07-07 05:50:48 字數 1200 閱讀 4275

const物件建立之後,就不能改變其值,所以在定義時必須對其初始化。

如果利用乙個物件對const物件進行初始化,則它們可以是不是const型別沒有關係。

int i = 1;

const ci = i;//正確

int j = ci;//正確

當嘗試改變ci的值時,ci的常量特性才發揮作用

預設情況下,const物件僅在定義檔案內有效,如果需要在其他檔案中也需要使用,則需要定義成 extern const,同時在需要使用使用的檔案中用extern const宣告.

const引用

可以把引用繫結到cosnt物件上——對常量的引用,對常量的引用   不能用來   修 改  所繫結物件。

初始化和對常量的引用

引用的型別必須與其引用物件的型別一致,但是有兩種例外,第一種,就是,對常量引用初始化時,只要右邊的表示式能轉換為引用物件的型別即可。

int i = 1;

const int &r1 = i;//對const的引用可能引用乙個非const物件,但是不能通過r1改變i的值

const double & r2 = 42;//正確,可以對字面值常量進行引用

指標和const

指標是物件,所以存在常量指標(指標本身是個常量),指向常量的指標。

常量指標:指標值不能被改變,指向的物件可能被改變

指向常量的指標:不能通過指標改變物件,指標值可能被改變

const int ci = 1;

int *pi = &ci;//錯誤,pi是個普通指標

const int * cp = &ci;//正確,cp是指向常量的指標

和常量引用一樣,指向常量的指標,可能通過其它途徑改變所指向物件的值

頂層const   和 底層 const

頂層const:本身是常量

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

乙個物件可以同時是頂層const和 底層const

int i = 0;

int *const  p1 = &i;//頂層const

const int ci = 42;//頂層const

cosnt int *p2  = &ci;//底層const

const int * const p3 = p2;//既是頂層const,又是底層const

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

c 11筆記 04 const修飾符

簡單明瞭。如果const出現在星號左邊,表示被指物是常量 如果出現在星號右邊,表示指標自身是常量 如果出現在星號兩邊,表示被指物和指標兩者都是常量。char greet hello char p greet greet不能變,即不能通過 p 的方式改變 但仍可通過greet 的方式改變 指標可指向別...

C 11中的noexcept修飾符

在c 11標準之前,c 在函式宣告中有exception specification 異常宣告 的功能,用來指定函式可能丟擲的異常型別。voidfunc0 throw runtime error voidfunc1 throw voidfunc2 函式func0可能丟擲runtime error型別...

C 中const修飾符

const只對它左邊的東西起作用 唯一的例外就是const本身就是最左邊的修飾符,那麼它才會對右邊的東西起作用。指標常量 關鍵字順序為 const 和中文順序一致 例如 int const a,表示指標a是乙個常量,初始化後不可更改 永遠指向某個物件 但是指向的物件的值可以修改,如 a 10 常量指...