回覆列表
  • 1 # 沒隆隆

    字串常量最主要的好處是不可修改,其次還有佔用記憶體少,易於維護。

    什麼是字串常量

    形如“string const”,被雙引號括起來的內容稱為字串常量。字串常量具有兩個性質,一是其中內容不可被修改,而是字串常量屬於靜態儲存類別,類似於靜態區域性變數,該字串在整個生命週期只會被儲存一次,即使函式被呼叫多次。雙引號返回的是字串的指標,指向儲存該字串的位置。

    字串常量的獲取

    主要有陣列和指標兩種方式。

    常量陣列

    const char str[] = "Please Pay attention to my taotiao, Thanks";

    新增const 說明該字串陣列是內容不可變的,如果不新增const,則說明該字串陣列是內容可變的,但是變動的是該陣列內容,並不是字串常量本身。

    指標

    const char *p = "Please Pay attention to my taotiao, Thanks";

    指標p指向的是該字串常量的地址。

    其實,這兩種形式並不完全相同。函式執行前,字串已經儲存在靜態儲存區。函式被呼叫時,才給陣列分配記憶體,將字串的內容複製到陣列中。因此此時多出一個字串副本,一個在靜態儲存區,一個在陣列中。

    相對於指標,只會把字串的地址賦值給指標,記憶體中還只有一個字串,指標指向該字串的位置。

    總之,陣列把靜態儲存區的字串複製到陣列中,而指標只把字串的地址複製給指標,簡言之,陣列複製內容,指標複製地址。

    可以使用預定義,將字串常量進行縮寫,增加程式碼可讀性,便於維護。

    #define MSG "Please Pay attention to my taotiao, Thanks"

    const char *p = MSG;

  • 2 # lee588

    如果樓主是因為愛好C程式設計,在學習或程式設計實戰遇到這樣的問題的話,建議樓主再可以把C語言的基礎知識學紮實點。

    C語言中的每種資料結構、變數、常量都有其應用範圍,針對樓主提出的問題,如果程式設計中使用字串常量,那我猜樓主的本意就是不想在程式執行中來修改這些常量,不論那本C教程中都對常量有描述,常量是在程式執行過程種不允許被修改的,這樣做的好處:一是可以對一些重要資料進行保護,二是可以節省程式的記憶體開銷。

    如果樓主想修改字串建議使用陣列變數來儲存,其實歸根到底樓主還是要弄清楚變數和常量的本質區別,然後根據自己的實際需要來設計程式。

  • 3 # 蟲蟲安全

    常量就是就是值不能變化或者說值只讀的量。

    C語言中有兩種形式的常量,宏定義和const常量。

    宏常量

    我們定一個折扣discount為0.85:

    #define DISCOUNT 0.85

    宏定義是預處理,程式不會為它分配儲存空間,編譯器執行預處理的時候會把程式中遇到的所有DISCOUNT都替換為0.85。

    const常量

    我們定義const常量,格式為:

    const float DISCOUNT 0.85f;

    我們對比知道const常量俱有型別,這是和宏定義的不同之處;還有就是const常量在編譯後儲存在一個全域性符號表中(或者靜態資料儲存區),其值只讀無法修改。

    常量的作用

    常量作用就維護一個不能修改的變數。這樣防止被人亂改,主要用於程式一個全域性性質關鍵引數設定。比如你一個銷售系統的折扣,你設定好了就不能隨便更改。

    還有就是一些數學上,物理學等一些常數直接記數字不是很方便就給它起個別名代替之。比如我們定義圓周率。

    #define PI 3.1415926

    注意:我們定義常量時候都是用的大寫,這是程式設計屆的一些需要墨守的成規。

  • 中秋節和大豐收的關聯?
  • 價效比最高的聽搖滾耳機是什麼?