C中const關鍵字

2021-06-22 20:09:04 字數 1288 閱讀 2918

const 

用法:定義常量,修飾指標、函式的輸入引數和返回值,把定義或者修飾的變數屬性設為唯讀。

本質上它只是在全域性資料段或者棧中定義的是乙個唯讀的常量,

不是真正位於字串常量區。

所以關鍵字const

並不能把變數變成真正的常量,事實上還是可以改變

const

定義的變數的值。

const

的目的是為了產生高質量的**,提高**的可讀性,同時保護好不能被任意改變的記憶體。

關鍵字const

需要注意的問題:

問題一:const

變數與常量

1、用可讀變數定義陣列長度

例如:const  int n = 4;

int sum[n] = ;

ansi c的編譯器會報告有錯誤,因為ansi c規定陣列定義時長度必須是「常量」。而n是乙個變數,只是被定義為唯讀而已。從這裡可以看出唯讀變數和常量還是存在差別的。但是在其他例如

gcc編譯器中卻沒有提示錯誤報告。

2、可讀變數初始化

例如:const int b;//

提示警告

const int a = 8; //n為常量,不能直接賦值改變

a的值(

a = 9

;錯誤)

int const a = 8;

//效果是一樣的

const定義變數時必須要進行初始化賦值,否則會提示警告。而且如果不進行初始化則該變數也毫無意義,因為該變數只能永遠是乙個不定值。(

vc中沒有初始化只提示警告)

3、const

定義的變數修改內容。

int main()

這個程式最終輸出的結果是3;

問題二:const

與指標1、指標指向的內容為可讀

const  int *p = &a;

//指標指向的內容唯讀,不能通過該指標去修改寫,但是這個指標本身可以改變。

int main()

2、指標本身為可讀

int  * const  p = &a;

//指標本身為可讀,指標初始化到乙個物件後,將不能被修改。

int main() 

const和指標一起使用是

c語言中乙個很常見的困惑之處,上面的兩點大家一定要分清楚

問題三 :const

與函式1、修飾函式返回值

const char *foo(void)   //修飾返回值,表示返回的指標指向的內容唯讀

2、定義函式引數

void foo(const char *str)

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...

c 中const關鍵字

關於const關鍵字,有幾個注意點。首先是把引用繫結到const物件上,與普通引用不同,對常量的引用不能被用來修改它所繫結的物件。const int ci 1024 const int r1 ci 正確 引用及其對應的物件都是常量 r1 42 錯誤 r1是對常量的引用,不可修改 int r2 ci ...