字串區別於字元陣列

2021-07-31 17:02:40 字數 1585 閱讀 3142

1> 定義: char c[10]

字元型與整型互相通用,因此 int c[10] 也可以定義字元陣列。但由於兩種型別分配位元組不同, 用整型來定義會浪費空間, 另外這樣定義實際意義也不大, 只是為了說明其合法性。

<2> 初始化: 

最簡單的方法即逐個賦值: char c[10]=; 10個字元分別賦紿c[0]到c[9]10個元素。

如果初值個數小於陣列長度,則只將這些字元賦紿陣列中前面的元素,其餘元素自動定為空字元(即'\0')。

如char c[12]=; 則c[10]、c[11]值都為'\0' 。

c語言中,將字串作為字元陣列來處理。一般我們用字元陣列來存放字串時,都要先確定乙個足夠大的陣列,而實際並用不了那麼多,而我們只關心其有效位,為測定字串實際長度,c規定了乙個"字串結束標誌",以字元 '\0' 代表。如果有乙個字串,其中第10個字元為'\0',則此字串的有效字元為9個。也就是說,在遇到字元'\0'時,表示字串結束,由它前面的字元組成字串。

系統對字串常量也自動加乙個'\0'作為結束符。

對於語句: pirntf("how do you do? \n"); 實際上該字串在記憶體中存放時,系統自動在最後乙個字元'\0'的後面加了乙個'\0'作為字串結束標誌,在執行printf函式時,每輸出乙個字元檢查一次,看下乙個字元是否'\0'。遇'\0'就停止輸出。

可以用字串常量來初始化字元陣列。如:

也可直接寫成:

注意此時陣列的長度不是10,而是11,因為系統自動加上了'\0'結束符。

字元陣列不要求最後乙個字元為'\0',而為了使處理字元陣列和字串的方法一致,便於測定字串的實際長度,能及方便在程式中處理, 在字元陣列末尾也常加上乙個'\0'。

<3> 字元陣列的輸入輸出 

(1) 逐個字元輸入輸出。用格式符"%c"輸入或輸出乙個字元。

(2) 將整個字串一次輸入或輸出。用"%s"格式符,意思是輸出字串(string)。例如:

char c=;

printf("%s", c);

如果乙個字元陣列中包含乙個以上'\0',則遇第乙個'\0'時輸出就結束。

(3) 若輸入字串長度超過字元陣列所定義的長度時,將造成陣列下標越界,但系統對此並不報錯。

(4) 用%s格式輸入字元時,遇空格、tab鍵和回車將自動結束輸入。

用scanf函式輸入時, 遇到空格則認為乙個字串結束。試驗如下:

#include

int main()

執行結果:

******************************==

how are you↙

how are you

******************************==

#include

int main()

執行結果:

******************************==

how are you?↙

how******************************==

由第二個程式可知,實際並未將這12個字元加上'\0'送到陣列str中,而是將空格前的字元"how"送到str中,將其視為字串處理,在其後加上'\0' 。

字串 字串陣列 字元陣列的區別

string a newstring 字串 string a newstring 5 字串陣列 char a newchar 5 字元陣列 string a newstring abc 字串 string a newstring 字串陣列的賦值 string a 字串陣列的初始化 char a ne...

字串與字元陣列的區別

用字元陣列和字元指標變數都可實現字串的儲存和運算。但是兩者是有區別的。在使用時應注意以下幾個問題 1.字串指標變數本身是乙個變數,用於存放字串的首位址。而字串本身是存放在以該首位址為首的一塊連續的記憶體空間中並以 0 作為串的結束。字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。2.對字串...

字元陣列和字串的區別

字元陣列和字串的區別 1.字串指標變數本身是乙個變數,用於存放字串的首位址。而字串本身是存放在以該首位址為首的一塊連續的記憶體空間中並以 0 作為串的結束。字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。2.對字串指標方式 char ps c language 可以寫為 char ps p...