const說明的型別是常型別,而且定義後不能被更改。
~~const常量具有型別,編譯器可以進行安全檢查;#define巨集定義沒有資料型別,只是簡單的字串替換,不能進行安全檢查可以節省空間,避免不必要的記憶體分配
1.對於指向常量的指標,不能通過指標來修改物件的值。
2.不能使用void*
指標儲存const物件的位址,必須使用const void*
型別的指標儲存const物件的位址。
3.允許把非const物件的位址賦值給const物件的指標,如果要修改指標所指向的物件值,必須通過其他方式修改,不能直接通過當前指標直接修改。
非const變數預設為extern變數,要使const變數能夠在其他檔案中訪問,必須在檔案中顯式地指定它為extern。
在乙個類中,任何不會修改資料成員的函式都應該宣告為const型別。如果在編寫const成員函式時,不慎修改 資料成員,或者呼叫了其它非const成員函式,編譯器將指出錯誤,這無疑會提高程式的健壯性。
使用const關鍵字進行說明的成員函式,稱為常成員函式。只有常成員函式才有資格操作常量或常物件,沒有使用const關鍵字進行說明的成員函式不能用來操作常物件。
const char * a; //指向const物件的指標或者說指向常量的指標。char const * a; //同上
char * const a; //指向型別物件的const指標。或者說常指標、const指標。
const char * const a; //指向const物件的const指標。
小結:如果const位於
*
的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;如果const位於
*
的右側,const就是修飾指標本身,即指標本身是常量。
C 回顧(1) const的用法
說明 const是屬於左結合的型別修飾符,這裡只講怎麼使用。1 const 變數 定義const變數 常量 const int value1 1 value1不可變 int const value2 2 value2不可變 2 const與指標 const int p str1 p str1 不可變...
C 學習筆記1 const引用
const引用可以用不同型別的物件初始化 只要能從一種型別轉換到另一種型別即可 也可以是不可定址的值,如文字常量,例如 同樣的初始化對於非const引用是不合法的,將導致編譯錯誤。原因如下。引用在內部存放的是乙個物件的位址,它是該物件的別名。對於不可定址的值,如文字常量,以及不同型別的物件,編譯器為...
C 程式設計之關鍵字 1 Const
1 c 中const有什麼用?不要一聽到const就說是常量,這樣給考官一種在和乙個外行交談的感覺。應該說 const 修飾的內容不可改變就行了,定義常量只是一種使用方式而已,還有const引數,const資料成員,const成員函式,const返回值等,被const修飾的東西都受到強制保護,可以預...