通常在C語言中我們會遇到許多 const
修飾的變量,我們有時候會分不清它們,不知道什麼時候該用它們,常常會出現誤用,不如把它們的用法總結下來,防止以後出錯吧!
const關鍵字
-
:const是一個C語言(ANSI C)的關鍵字,具有着舉足輕重的地位。它限定一個變量不允許被改變,産生靜态作用。使用const在一定程度上可以 提高程式的安全性和可靠性。另外,在觀看别人代碼的時候,清晰了解const所起的作用,對了解對方的程式也有一定幫助。定義
常量指針
-
:常量指針本質是指針,常量修飾它,表示這個指針是一個指向常量的指針(變量)。指針指向的對象是常量,那麼這個對象不能被更改。定義
-
:格式
int num = 10; const int *ptr1 = # int const *ptr2 = # //可以指派,因為指針本身是變量 ptr1 = ptr2; //錯誤,不可以解引用後當左值,因為const修飾(int *)故指向的int型變量為常量不可修改 *ptr2 = *ptr1;
- 以上
寫在const
之前和寫在int
與int
之間的方式都正确,但習慣上常用第一種,表示更加明晰。*
- 指針本身的指向可以改變,但是指向的内容不可修改,隻讀。
- 以上
-
:通常用于參數傳遞過程中,如果被傳入的參數的值在函數執行期間不希望被修改可以使用常見用法
修飾已達到安全的目的。const
指針常量
-
:指針常量的本質是一個常量,并且使用指針來修飾它,那麼說明這個常量的值應該是一個指針。定義
-
:格式
int num = 10; int* const ptr = # //可以指派,指針常量指向的值并不一定是常量 *ptr = 11; //不可以指派,指針常量本身的指向不可改變,其值為常量 *ptr = #
-
:一般指針常量用于指向不會發生變化的指針,但是用法并不常見。常見用法
指向常量的常指針
- 相當于常量指針和指針常量的結合,格式
,相當與有一個指向不可修改的指針指向了一個不可修改的常量,在實際coding中很少使用。const int * const ptr = &num
總結 :const 修飾誰,誰就不變
【參考】:百度百科-const