常量關鍵詞const

2021-07-30 23:14:48 字數 814 閱讀 2052

可以用const修飾符號常量。const double pi=3.14

const int i和int const i是一樣的

也可以用const限定指標,但是限制指標時有幾個需要注意的地方。

1 const修飾的位置

const int* i,此時效果等同於int const *i

可以這麼看,先把const去掉,那麼上面分別是(int* )i 和 int (*i)、 都意味著指向int型數的指標

但是當這麼const再接近i時,則不是那麼一回事了。int * const  i  這是const時修飾i的,也就是說,i裡裝的資料也就是記憶體位址是不可修改的,而此對應位址指向的 資料反而是可以修改的。

此時,i+=2  //是非法的

*i=3  //是合法的

2 指標賦值

將常量或者非常量資料位址賦值給常量指標是合法的,但是將常量資料位址賦給普通指標則是非法的

因為常量指標意味著無論指向的資料是不是常量,都可以通過指標修改其具體的值。但是普通指標如果賦給常量資料的話,則可以通過指標修改常量資料,這與加const的初衷相悖,所以行不通。

當然也可以通過const來修飾陣列

double num[4]=

const double *d=num;

*d=&num[2]  //不允許

*d=9.32        //允許

double a[3]=;

const double b[4]=;

double  *p=a;      //合法

*p=b[2];   //不合法

p=&a[2];  // 合法

const關鍵詞的作用

c語言const是畢業生面試被提問比較高的乙個問題,這裡簡單總結一下 1 定義const常量,使其具有不可變性 const修飾的int型,再進行數值計算會報錯2 便於進行型別檢查,告訴編譯器處理內容,消除隱患 例如 void f const int i 編譯器就會知道i是乙個常量,不允許修改 3 方...

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一下,是...