學習筆記 C和C 中關於字串的細小知識點

2021-06-22 14:45:10 字數 954 閱讀 6363

這次和大家分享下c-風格的字串的一些細小知識點,字串很簡單,大家經常用肯定都很熟悉,不過還是會有一些基礎但是容易被忽略的一些細節,而且華為軟體機試經常會有關於字串的題,所以覺得有必要和大家分享一下自己的總結。

c-風格的字串具有一種特殊的性質,它必須以空字元結尾,即\0,其ascii碼為0,用來標記字串的結尾,如:

char ming[9] = ;
這個值得注意,c++的很多處理字串的函式,包括cout,它們逐個處理字串中的字元,直到到達空字元才停下。如果最後乙個字元不是空字元,使用cout函式的話,將列印char陣列內的9個字母,並接著將記憶體中隨後各個位元組解釋為要列印的字元,直到遇到空字元為止,很可怕吧。

我們也可以這樣初始化字串,使用雙引號,而不是繁瑣的單引號:

char ming = "charming";
用雙引號括起的字串隱式地包括結尾的空字元,因此不用顯示的包含它,很方便吧。

我們初始化陣列的時候應該確保陣列足夠大,能儲存字串的所有字元(包括空字元)。讓陣列比字串長一些並沒有壞處,頂多浪費一些空間而已。

記住,不能以下面兩種方式將字元常量賦給char型變數:

char shirt_size = 's';

char shirt_size = "s";

第一種可以成功賦值,但其將s的ascii碼的值,即83,賦給了shirt_size;

第二種則不能成功賦值,因為「s」實際表示字串所在的記憶體位址。

char ming[15] = "charming";

int n = sizeof ming; //n為整個陣列的長度,n為15

int m = strlen(ming); //m為字串長度,m為8

先寫這麼多,吃飯去了,也祝各位吃好!

C 學習筆記 字串

字串 char型別的唯讀陣列 1 常用方法 length 獲得字串中字元的個數 toupper 將字串轉換為大寫 tolower 將字串轉換為小寫 equals 比較兩個字串是否相同,equals string a,stringcomparison.ordinalignorecase 比較時可以忽略...

c 字串學習筆記

include include using namespace std string str1 生成空字串 cin str1 cout str1 string str2 hello 生成並初始化 cout str2 string str3 str2 hello cout str3 string st...

字串 C 學習筆記之 字串和字串流

字元陣列,也就是存放字元型別資料的陣列,只不過字元陣列的結尾必須是 0 c 已經提供了一些字串處理函式,這些函式被封裝在標頭檔案和 中。此外,為了更方便地對字串進行操作,c 中定義了乙個 string 類,可以在使用的時候包含標頭檔案。此外,可以用乙個字串類變數或者字元陣列或者字元直接對字串類變數進...