const關鍵字在c和c 中

2021-05-24 02:50:50 字數 857 閱讀 9085

(1)在預編譯期使用const變數的差異。

下面這段**:

const int max = 50;

int array[max];

在c中,max在預編譯期還沒有確定其值,而定義陣列時,下標必須在預編譯期有確定值,因此不可用max做為下標。編譯提示錯誤。

在c中const變數的意義是「唯讀變數」。

而在c++中,上述**可行。c++擴充套件了該關鍵字的含義。

(2)使用其它檔案中定義的const變數的差異。

檔案aconst int test = 678;

檔案b方式一:extern int test;              //c中此舉可編譯通過,c++中不可

或方式二:extern const int test;       //c中此舉可編譯通過,c++中不可

在c中,使用另乙個檔案中定義的全域性const變數,在宣告時,可以宣告為非const變數,也可以宣告為const變數。但是宣告為非const變數時,如果在程式中修改此變數的值,可以編譯通過,但僅僅是可以編譯通過而已,執行時會出現訪問記憶體錯誤。因為訪問了唯讀變數。

在c++中,在全域性作用域中定義為const的變數,預設為定義此變數的檔案的區域性變數,不可被其它檔案訪問或使用,因此以上兩種方式都不能編譯通過。

如果在c++中想要訪問其它檔案中的全域性const變數怎麼辦?簡單,只要在定義處加個extern宣告就ok了,這個extern宣告的意思是說,此const變數可以被其它檔案訪問。

例:檔案a

extern const int test = 678;

檔案bextern const int test;           //注意,c++中比c中要嚴格,不能宣告為extern int test;

C中const關鍵字

const 用法 定義常量,修飾指標 函式的輸入引數和返回值,把定義或者修飾的變數屬性設為唯讀。本質上它只是在全域性資料段或者棧中定義的是乙個唯讀的常量,不是真正位於字串常量區。所以關鍵字const 並不能把變數變成真正的常量,事實上還是可以改變 const 定義的變數的值。const 的目的是為了...

C 中const關鍵字

一 const修飾指標變數 int num 0 1.const在 前面,表示const修飾指標指向的內容 const int p intconst p 2.const在 後面,表示const修飾指標變數 int const p 二 const修飾成員函式首先來看一下普通成員函式 class a fu...

C 中」const「關鍵字

關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,現將本人的一些體會總結如下,期望對大家有所幫助 一 丶const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a...