C 中的const關鍵詞用法

2021-08-23 12:27:13 字數 1055 閱讀 4608

cont

int i = 5;

i = 8; //此處會產生編譯錯誤,因為i被const修飾,因此i的值不能再改變

同樣地,const除了可以修飾基本型別資料外,還可以用來修飾指標和引用,但修飾指標的時候會有常量指標和指標常量之分:

const

int* p;

此處是乙個常量指標,從左往右讀,先是常量再是指標。對於對於常量指標,顧名思義,這是乙個指標,但指向的是乙個常量。也即一旦指向了某個變數,則不能通過指標改變該變數的值,因為該變數被指定為了常量。例如以下**片段:

const

int* p;

int i = 8;

p = &i; //常量指標指向變數i,相當於把i視為了常量

*p = 5; //產生編譯錯誤,因為常量的值無法通過指標改變。

int j = 40;

p = &j; //合法,此處改變的是指標,即將指標更換乙個指向的變數,由原來的指向i改為指向j

int* const p;

int i = 8;

p = &i; //此處指標常量指向i

*p = 5; //合法,此處的p是常量,而非指向的i是常量

int j = 40;

p = &j; //此處產生編譯錯誤,因為p是乙個常量,前面已經指向了i,此處則不能再指向j

const

int* const p;

int i = 8;

p = &i;

*p = 5; //產生編譯錯誤

int j = 40;

p = &j; /產生編譯錯誤

int i = 8;

int& const r = &i;

r = 5; //非法,產生編譯錯誤,錯誤原因和const int* const相似

int j = 40;

r = j; //不會產生編譯錯誤,但是無意義。

C 中const關鍵詞總結

下午在調程式時,遇到error passing class name as this argument of class function discards qualifiers的編譯的錯誤,錯誤的意思是 this指標在作為引數傳入class function時限定符被取消了 google一下,是這...

C 中const關鍵詞總結

下午在調程式時,遇到 error passing class name as this argument of class function discards qualifiers的編譯的錯誤,錯誤的意思是 this指標在作為引數傳入class function時限定符被取消了 google一下,是...

常量關鍵詞const

可以用const修飾符號常量。const double pi 3.14 const int i和int const i是一樣的 也可以用const限定指標,但是限制指標時有幾個需要注意的地方。1 const修飾的位置 const int i,此時效果等同於int const i 可以這麼看,先把co...