第 11 章 字串

2021-10-02 09:43:41 字數 2566 閱讀 1917

​ 字串是以空字元( \0 )結尾的 char 型別陣列。

有多種方法可以定義字串:字串常量、char 型別陣列、指向 char 的指標。

2.1 字串常量

​ 用雙引號括起來的內容稱為字串字面量,也叫做字串常量。雙引號中的字元和編譯器自動加入末尾的 \0 字元,都作為字串儲存在記憶體中。

​ 字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在。

​ 用雙引號括起來的內容被視為指向該字串儲存位置的指標。

2.2 字串陣列和初始化

​ 定義字串的時候,必須讓編譯器知道需要多少空間。

​ 兩種方法:

​ ⅰ. 使用足夠空間的陣列儲存字串。 如 char a[50] = 「alkdjfaldkfjaldkf」;

​ ⅱ. 讓編譯器來確定陣列的大小。 如:char a = 「aldkjfaldkfalkdfj」;

​ 第二種方法方便,但是該方法初始化的字串不能再追加新的內容。

2.3 陣列和指標

​ 陣列宣告字串:char arr = 「arry and pointer.」;

​ 指標宣告字串:const char * pt = 「arry and pointer.」;

​ 以上兩種宣告,pt 和 arr 都是該字串的位址。在這兩種情況下,帶引號的字串本身決定了預留給字串的儲存空間。但是這兩種方式還是有不同。

​ **字串常量儲存在靜態儲存區中,**但是,程式在執行的時候才會為陣列分配記憶體,所以在執行時才把字串拷貝到陣列中。這時該字串有兩個副本,乙個是靜態記憶體中的字串字面量,另乙個是存在 arr 陣列中的字串。

​ 而指標是儲存了字串在靜態儲存區的位置,因此這種方式的字串只有乙個副本。

例1:

#include #define msg "i'm a const string!"

int main(void)

/*輸出結果:

address of msg is : 0x400650

address of "i'm a const string!" is : 0x400650

address of pt is : 0x400650

address of arr is : 0x7ffce33adba0

*/

​ 分析結果:

​ 兩個字串常量的位址一樣,說明相同的字串常量只儲存了一次(與編譯器採取的策略有關);指標與 msg 的位址一樣,說明指標是直接使用的原字串,arr 與 msg 的位址不一樣,說明 arr 使用的是字串的拷貝。

​ 字串常量被視為乙個 const 型別的資料,因此應該使用指向 const 的指標。即:const char * pt = msg;

例2:

#include #define msg "i'm a const string!"

int main(void)

分析結果:

​ 該結果說明 pt 是變數,而陣列名 arr 是位址常量,但是陣列的元素是變數。

2.4 指標陣列

#include int main(void)

; //宣告普通陣列

char arry[5][40] = ;

printf("%-36s %-25s\n", "ptarry", "arry");

for (i = 0; i < 5; i++)

printf("%-36s %-25s\n", ptarry[i], arry[i]);

printf("\n size of ptarry is : %zd, size of arry is %zd", sizeof(ptarry), sizeof(arry));

return 0;

}/*執行結果

ptarry arry

aaaaaaaaaaaa aaaaaaaaaaaa

bbbbbbbbbbbbb bbbbbbbbbbbbb

ccccccccccccccc ccccccccccccccc

dddddddddddd dddddddddddd

eeeeeeeeeeee eeeeeeeeeeee

size of ptarry is : 40, size of arry is 200

*/

執行結果:

​ ptarry 的大小是 40位元組, 而 arry 的大小是 200位元組(具體大小與系統有關),因為在本系統中乙個指標佔 8 位元組,即 64 位,所以 5 個指標佔了 40 位元組,而 arry 是 5 * 40 = 200 位元組。

c primer plus (第六版)中文版

第1章 字串

字串是程式中經常使用的一種資料型別。串,顧名思義就是一些列單個元素的連線組合,那麼字串也就是由一系列單個字元連線而成。在上一堂課上,我們有一行 是 std cout hello world 這行 中,我給大家介紹了兩個c 標準庫物件以及使用方法。但是其中的 hello world 我沒有給大家解釋,...

第4章 字串

4.1 字串簡介 字串是由若干字元組成的序列。4.1.1 字串的概念 1.使用單引號標識字串 2.使用雙引號標識字串 3.使用三引號標識字串 4.1.2 轉義字元 4.2 字串的輸出與輸入 4.2.1 字串的輸出 4.2.2 字串的輸入 input 4.3 字串的索引與切片 4.4 字串的運算 4....

資料科學 第 3 章 11 字串處理

檢視了word列的字串長度,平均搜尋詞的長度為8.8,75 是搜尋詞在10個以內,最長的有95個字元 df.word.str.len describe out count 2324.000000 mean 8.767642 std 4.695302 min 0.000000 25 6.000000 ...