C語言是如何定義常量的?const定義的算不算是常量?
常見的有這么幾種方式。
首先就是宏定義,使用 define 來定義。
宏的特點就是在預處理的時候被替換,比如這個地方的 SIZE,預處理后就會變成數字 5。
第二種跟宏定義類似,常量也可以在編譯的時候通過編譯器傳入。
以 gcc 為例,編譯的時候提供 -D 選項,同樣會在預處理的時候替換成相應的數字。
第三種枚舉,使用 enum 關鍵字。
枚舉的特點是默認從 0 開始,逐漸遞增。如果需要大量含義相同的常量,可以考慮使用枚舉。
下面要說的就是 const,定義數組的時候,如果數組的長度僅僅用 const 來修飾,在編譯的時候就會提示錯誤。
const修飾的不是常量,屬于只讀變量,這一點在《C專家編程》中也有描述。在一個符號前面加上 const 限定符只是表示這個符號不能被賦值。
為了解決這個問題,C23專門引入了新的關鍵字 constexpr,用 constexpr 修飾的才是真正的常量,不管是用它定義數組長度,還是給枚舉賦值都可以。這是個正兒八經的常量。
除了上面幾種,代碼中常見的還有字符串常量,比如這樣的,"helloworld"屬于字符串常量,在代碼運行過程中不能修改。
還有沒有其他定義常量的方法,如果有遺漏,歡迎大家在評論區補充。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
183文章
7644瀏覽量
145570 -
CONST
+關注
關注
0文章
45瀏覽量
8761
原文標題:const定義的是不是常量
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
CW32F030是不是支持keil?
各位大佬,請問CW32F030是不是支持keil ?。?/div>
發表于 01-19 07:02
瑞薩RA系列FSP庫開發實戰指南之定義傳輸源和目標存儲器
數組由于有const聲明為常量,因此其數據存儲在內部Flash 中,DST_Buffer為普通的全局變量,其數據存儲在RAM中。這兩個數組的大小由宏定義BUFFER_SIZE來決定。
請問IR 調制器是不是復用串口的?。?/a>
請問,IR 調制器是不是復用串口的?。?/div>
發表于 11-26 06:36
請問STM32的內部Flash操作是不是優先級最高?
STM32的內部Flash操作是不是優先級最高?目前在內部Flash的單獨一頁存儲了數據,發現在進行頁擦除的時候正常工作的定時器中斷無法進入了
發表于 08-13 07:03
光纖跳線是不是就是尾纖
光纖跳線和尾纖不是同一種東西,它們在多個方面存在明顯區別: 定義與用途 光纖跳線 定義:光纖跳線也叫光纖連接器,是兩端都帶有連接器的光纖線纜,用于連接設備與設備、設備與光纖配線架等,實現光信號的傳輸
帶你在單片機編程中熟練使用const(可下載)
在 C 語言關鍵字中 const 舉足輕重,我們今天就深度聊一聊 const 的定義和實際應用,讓它 不再是迷C 語言中 const 關鍵字是 constant 的縮寫,是恒定不變的意
發表于 04-01 14:18
?3次下載
const定義的是不是常量
評論