天天看點

C語言-----constCONST

CONST

const是一個C語言的關鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性,另外,在觀看别人代碼的時候,清晰了解const所起的作用,對了解對方的程式也有一些幫助。另外CONST在其他程式設計語言中也有出現,如C++、PHP5、C#.net、HC08 C。

  C中CONST的使用:   雖然這聽起來很簡單,但實際上,const的使用也是c語言中一個比較微妙的地方,微妙在何處呢?請看下面幾個問題。   問題:const變量 & 常量   為什麼下面的例子在使用一個const變量來初始化數組,ANSI C的編譯器會報告一個錯誤呢?    const int n = 5;   int a[n];   答案與分析:   1)、這個問題讨論的是“常量”與“隻讀變量”的差別。常量肯定是隻讀的,例如5, "abc",等,肯定是隻讀的,因為常量是被編譯器放在記憶體中的隻讀區域,當然也就不能夠去修改它。而“隻讀變量”則是在記憶體中開辟一個地方來存放它的值,隻不過這個值由編譯器限定不允許被修改。C語言關鍵字const就是用來限定一個變量不允許被改變的修飾符(Qualifier)。上述代碼中變量n被修飾為隻讀變量,可惜再怎麼修飾也不是常量。而ANSI C規定數組定義時長度必須是“常量”,“隻讀變量”也是不可以的。   2)、注意:在ANSI C中,這種寫法是錯誤的,因為數組的大小應該是個常量,而const int n,n隻是一個變量(常量 != 不可變的變量,但在标準C++中,這樣定義的是一個常量,這種寫法是對的),實際上,根據編譯過程及記憶體配置設定來看,這種用法本來就應該是合理的,隻是 ANSI C對數組的規定限制了它(實際上在GCC和VS2005中編譯以上代碼;确實沒有錯誤産生,也沒有給出警告!)。