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