C 基礎之const基礎用法

2021-08-25 06:05:35 字數 1529 閱讀 6264

前世

下列 for 迴圈語句有兩個問題,兩個都和使用 512 作為迴圈上界有關。

for (int index = 0; index != 512; ++index) 

第乙個問題是程式的可讀性。比較 index 與 512 有什麼意思呢?迴圈在做什麼呢?也就是說 512 作用何在?

第二個問題是程式的可維護性。假設這個程式非常龐大,512 出現了 100 次。進一步假設在這 100 次中,有 80 次是表示某一特殊緩衝區的大小,剩餘 20 次用於其他目的。現在我們需要把緩衝區的大小增大到 1024。要實現這一改變,必須檢查每個 512 出現的位置。我們必須確定(在每種情況下都準確地確定)哪些 512 表示緩衝區大小,而哪些不是。改錯乙個都會使程式崩潰,又得回過頭來重新檢查。

解決這兩個問題的方法是使用乙個初始化為 512 的物件:

int bufsize = 512;    // input buffer size

for (int index = 0; index != bufsize; ++index)

通過使用好記的名字如 bufsize,增強了程式的可讀性。現在是對物件 bufsize 測試而不是字面值常量 512 測試:

index !=bufsize
今生

定義 const 物件

定義乙個變數代表某一常數的方法仍然有乙個嚴重的問題。即 bufsize 是可以被修改的。bufsize 可能被有意或無意地修改。const 限定符提供了乙個解決辦法,它把乙個物件轉換成乙個常量。

const

int bufsize = 512; // input buffer size

因為常量在定義後就不能被修改,所以定義時必須初始化。

const 物件預設為檔案的區域性變數

與其他變數不同,除非特別說明,在全域性作用域宣告的 const 變數是定義該物件的檔案的區域性變數。此變數只存在於那個檔案中,不能被其他檔案訪問。

extern const int bufsize = fcn();

extern const int bufsize; // uses bufsize from file_1

// uses bufsize defined in file_1

for (int index = 0; index != bufsize; ++index)

// ...

本程式中,file_1.cc 通過函式 fcn 的返回值來定義和初始化 bufsize。而 bufsize 定義為 extern,也就意味著 bufsize 可以在其他的檔案中使用。file_2.cc 中 extern 的宣告同樣是 extern;這種情況下,extern 標誌著 bufsize 是乙個宣告,所以沒有初始化式。

非 const 變數預設為 extern。要使 const 變數能夠在其他的檔案中訪問,必須地指定它為 extern。

C 基礎 const基本用法

c 中三目運算子可以當左值 a b a b 30 返回乙個最小數 並且給最小數賦值成30const的基本用法 int main int func1 const 初級理解 const是定義常量 const意味著唯讀 含義 第乙個第二個意思一樣 代表乙個常整形數 第三個 c是乙個指向常整形數的指標 所指...

const基礎用法

一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a b 2 int const a b 3 const int const a b 4 如果你能區分出上述四種情況,那麼,恭喜你,你已經...

c 基礎 const 修改

int main const double minvalue 9.6 定義常量double const double ptr minvalue 將minvlaue位址賦予ptr cout ptr 1.常量在程式中任何改變這個值的企圖都將導致編譯錯誤因此它被稱為是唯讀的read only 理論是無法修...