const int a 表示a是一個(gè)整形常量,可以理解為修飾int
int const a 表示a是一個(gè)整形常量,可以理解為修飾int
int* const a 表示a是一個(gè)常指針,指針位置不能改變,可以理解為修飾*
const int* a 表示a指針必須指向一個(gè)整形常量,指針位置可以改變,可以理解為修飾int
int const * a 表示a指針必須指向一個(gè)整形常量,指針位置可以改變,可以理解為修飾int
const int* const a 表示a是一個(gè)常指針,指針指向一個(gè)整形常量,可以理解為修飾int和*
規(guī)律:
在int 左右的const都是修飾它的
在*右邊的const才是修飾它的
補(bǔ)充:常引用
const string& a
或者
string const & a
注意:string &const a這種寫(xiě)法是錯(cuò)誤的
常引用時(shí):引用的內(nèi)容不能改變。
有人會(huì)問(wèn),引用不改變的方法是什么?答案是引用本來(lái)就是不可改變的。對(duì)引用賦值其實(shí)是改變了引用的變量的值。
很多庫(kù)中函數(shù)參數(shù)為什么經(jīng)常是常引用呢?原因是將常引用實(shí)參傳遞給引用類(lèi)型的型參會(huì)報(bào)錯(cuò),而將引用類(lèi)型的實(shí)參傳遞給常引用類(lèi)型的型參不會(huì)報(bào)錯(cuò)。
繼續(xù)補(bǔ)充:常數(shù)組
const int a[3]
或者
int const a[3]
表示數(shù)組內(nèi)容不能改變。
其實(shí)數(shù)組頭指針本來(lái)就不能改變因此這種情況是頭指針和數(shù)組內(nèi)容都不能被改變。