(一)const關鍵字

2021-08-28 17:28:54 字數 1181 閱讀 7871

一、對於 const 關鍵字我在這裡說一下在 c 語言中的使用

第乙個需要理解的是const修飾的是變數

修飾變數的目的是為了使得該變數唯讀

二、為什麼要使用 const 關鍵字

方便**閱讀,清楚的告訴其他人程式哪些變數是不可以被修改的

同時也可以方便自己**的書寫,因為寫的**量過大,一些變數你不希望被修改而在**書寫過程你忘記了,const 可以有效的指出你的錯誤。

乙個關鍵的理解:const 修飾變數只是通過當前變數無法去修改你定義的變數,而 c 語言的很重要的乙個知識點就是位址,有了位址,const 型別也可以被修改,不過編譯器一般會有警告。

看以下**:

const int i = 5;

printf("i = %d\n", i);

int *p = &i;

*p = 10;

printf("i = %d\n", i);

編譯器警告:initialization discards 『const』 qualifier from pointer target type

意思是 p 修改了 i 的const特性(這樣你就會發現程式錯誤),也可以理解為型別不匹配

i 是const int型別的,而 *p 是int 型,那麼可以這麼改 int const *p = &i;

這也是乙個很大的邏輯謬誤:你要變數唯讀,你又千方百計的想去改變的,典型吃飽了撐的。

const int a = 10;                 // 定義變數a,一般const型別只有在初始化的時候

// 因為變數已經唯讀,原則上來說後續是無法修改的

// 前提是你不挑事

const int *p = &a;//int const *p = &a;  // 定義指標指向的變數唯讀,也就是變數 a 唯讀,

// 變數 a 無法通過指標 p 去修改

int *const *p;                   // 修飾二級指標,二級指標p 指向的內容無法改變,即

// *p 無法被修改

int * const p;                   // 修飾指標,p是常量,p的位址無法被改變

const 離那種型別的近修飾那種型別。離 *p 近,*p 就無法改變,離 int 近,int 對應的變數就無法改變。  

const關鍵字用法

1 const常量 如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤 邊際效應 2 const修飾類的資料成員 class a const...

關鍵字const詳解

關鍵字const 1 用關鍵字const定義變數指所定義的常量。即恆定的變數,即不可改變的變數。例 const int i 10 此時 i 就是乙個整型的常量,其值不能改變。在c 中如果用const定義乙個物件,那麼物件中的成員變數就是常數,不能改變 只能為初始化的值 如果用const定義類中的成員...

const關鍵字用法

const修飾符表示該變數的值不能被改變。但得分兩種情況討論 修飾普通變數和修飾指標變數。1.普通常量 const int foo 5 表示foo不能再被賦值 foo 8 錯誤,因為foo是const修飾為不可變常量了 2.修飾指標 const char p test 表示p指向 的記憶體不可改變,...