字串的基本介紹

在 C 中,字串是由空字元(’\ 0’)終止的字元序列。

我們可以使用字串文字建立字串,字串文字是由雙引號括起來的字元序列; 例如,取字串文字 hello world。字串文字自動以空值終止。

我們可以使用幾種方法建立字串。例如,我們可以宣告一個 char *並將其初始化為指向字串的第一個字元:

char * string = "hello world";

當如上所述將 char *初始化為字串常量時,字串本身通常以只讀資料分配; string 是指向陣列的第一個元素的指標,它是字元'h'

由於字串文字是在只讀記憶體中分配的,因此它是不可修改的 1 。任何修改它的嘗試都會導致未定義的行為 ,所以最好新增 const 來獲得像這樣的編譯時錯誤

char const * string = "hello world";

它有類似的效果 2

char const string_arr[] = "hello world";

要建立可修改的字串,可以使用字串文字宣告一個字元陣列並初始化其內容,如下所示:

char modifiable_string[] = "hello world";

這相當於以下內容:

char modifiable_string[] = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\0'};

由於第二個版本使用大括號括起初始值設定項,因此字串不會自動以空值終止,除非通常將字元陣列中的'\0'字元顯式包含在最後一個元素中。

1 不可修改意味著字串文字中的字元無法修改,但請記住指標 string 可以修改(可以指向其他地方或可以遞增或遞減)。

2 兩個字串在某種意義上都具有類似的效果,即兩個字串的字元都無法修改。應該注意的是 string 是一個指向 char 的指標,它是一個可修改的 l 值, 因此它可以遞增或指向某個其他位置,而陣列 string_arr 是一個不可修改的 l 值,它不能被修改。