C語言-----const

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中編譯以上代碼;確實沒有錯誤產生,也沒有給出警告!)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章