C語言是如何定義常量的?const定義的算不算是常量?
常見的有這么幾種方式。
首先就是宏定義,使用 define 來定義。
宏的特點就是在預處理的時候被替換,比如這個地方的 SIZE,預處理后就會變成數(shù)字 5。
第二種跟宏定義類似,常量也可以在編譯的時候通過編譯器傳入。
以 gcc 為例,編譯的時候提供 -D 選項,同樣會在預處理的時候替換成相應(yīng)的數(shù)字。
第三種枚舉,使用 enum 關(guān)鍵字。
枚舉的特點是默認從 0 開始,逐漸遞增。如果需要大量含義相同的常量,可以考慮使用枚舉。
下面要說的就是 const,定義數(shù)組的時候,如果數(shù)組的長度僅僅用 const 來修飾,在編譯的時候就會提示錯誤。
const修飾的不是常量,屬于只讀變量,這一點在《C專家編程》中也有描述。在一個符號前面加上 const 限定符只是表示這個符號不能被賦值。
為了解決這個問題,C23專門引入了新的關(guān)鍵字 constexpr,用 constexpr 修飾的才是真正的常量,不管是用它定義數(shù)組長度,還是給枚舉賦值都可以。這是個正兒八經(jīng)的常量。
除了上面幾種,代碼中常見的還有字符串常量,比如這樣的,"helloworld"屬于字符串常量,在代碼運行過程中不能修改。
還有沒有其他定義常量的方法,如果有遺漏,歡迎大家在評論區(qū)補充。
-
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137427 -
CONST
+關(guān)注
關(guān)注
0文章
45瀏覽量
8180
原文標題:const定義的是不是常量
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論