C語言裡面的常量是什麼?

時間 2021-05-07 05:09:00

1樓:CYWVS

不可修改的值叫做常量。

const int a = 1; 這個時候a是常量,1也是常量。

類似 1 、 'C' 、 "a string" 這種看起來是什麼樣,值就是什麼樣的值,叫做字面值常量。

2樓:言覃天

關鍵字 const 只是給編譯器的乙個訊號。如果你定義了const int x = 1, 之後又說x = 2,編譯器會報錯或者出warning。但是如果你定義 int *b = (int *)&a, *b = 2,這樣就沒事,因為程式是不關心常量和變數這個問題。

3樓:薛非

C語言中的常量一共有4種:

整數常量:integer-constant浮點常量:floating-constant列舉常量:

enumeration-constant字元常量:character-constant常量是乙個右值,可以把右值賦給乙個左值

int a = 1; 這裡的1確實是常量,是乙個整數常量

4樓:aCHAOS

1,2,3,4,5,6,7,8,9

這些就是常量

直接使用不是這些數值不是很不直觀嗎

這句話if(len < 10){}能知道這是要表達什麼意思嗎

如果這樣呢if(len < MAX_LEN){}能知道這是小於最大長度

所以用通常用巨集的方式定義乙個常量(也就是在編譯的時候把MAX_LEN替換成了10)

#defineMAX_LEN10

int constMAX_LEN= 10;

算是「常量」(注意加了引號了啊),這只是定義了乙個變數 MAX_LEN 但是這個變數是只可讀不可寫的,也能算是「常量」(注意加了引號了啊)但是你 *(int *)&MAX_LEN = 9; 取位址再轉成(int *)的指標不就能改變它的值了嗎,而且還占用記憶體。

所以在C語言多是使用巨集的方式。

C語言中,字串常量為什麼只能給字元陣列初始化,而不能通過指標賦值

程佳 陣列是指標常量,常量不能賦值。字串在c語言裡不是原生資料型別,就是乙個內容非0結尾為0的位元組陣列。所以對字串的操作要使用string.h裡那些庫函式。 神念的經 想啥呢,一旦定義成了靜態陣列,首元素位址就是定死的。想改位址?門都沒有。指標賦值?那是改指向的位址,不是改指向的內容。strcpy...

C語言 關於C裡面陣列批量初始化

蛋蛋的蛋 int a 1000 補充一下,類似的方式可以讓前500個元素等於1,後500個等於0,手機打字,不方便,有心人自己嘗試吧, 向晨 c標準庫有個limits.h的標頭檔案,裡面有你所使用機器的int char等型別變數的位元組長度和大小限制相關的巨集,可以用這些巨集來知道乙個int對應幾個...

C語言或者C 語言標頭檔案的意義是什麼,現代編譯器能否把這個給優化掉?

乙個小機械人 emmm暫時沒學到標頭檔案的真正意義,只從個新手的角度說通常你可以寫個include來簡化標頭檔案。但這樣做就很容易會出現莫名其妙有時還很難察覺的歧義錯誤,題主認為該怎麼解決這樣的問題呢? Kira 看了好幾個回答,都沒有回答到點上。可以看看我回答的另乙個類似的標頭檔案問題,裡面詳細講...