C 語言快速導覽 - 字串

C 語言的字串也屬於常數的一種,其是用雙引號圍起來的連續字元,如

"Hello"
"333-3333"
"Sherry Wang"
"No.3333, Zhongzheng Rd."


連續幾個字串前後無須任何運算子,字串會自動連接起來
"Hello" " " "world" "!"


注意,以上四個字串中有一個字串只含一個空格符號,這樣字串會自動連接為一個字串,如下
"Hello world!"


而完全不含任何字元的字串稱為空字串
"" //這是一個空字串


實際上空字串仍是包含一個字元
'\0'


這是字串的結束字元, '\0' 不會被計算在字串的長度內,但每個字串都會自動附加上 '\0' ,作為字串結束的標記。


字串也就是連續字元的集合,字元型態為 C 語言的基本資料型態之一, C 語言預設可直接使用 ASCII 編碼的符號,因此字串其實是許多字元型態的資料集合體,這樣同質的資料結構,在 C 語言中是陣列,所以
"Hello"


等同於以下的字元陣列
['H', 'e', 'l', 'l', 'o', '\0']


如此便可將字串用字元陣列來處理
char greet[] = "Hello";
char phonenumber[] = "333-3333";
char name[] = "Sherry Wang";
char address[] = "No.3333, Zhongzheng Rd.";


由於陣列的名稱也就是指標,因此也可直接用指標指向字串的第一個字元
char *greet = "Hello";
char *phonenumber = "333-3333";
char *name = "Sherry Wang";
char *address = "No.3333, Zhongzheng Rd."; 


兩者的差別在於陣列可直接用索引處理其內的字元,而利用指標須做算術運算。


若是字串中要儲存某些不可見字元,或是雙引號本身,這時候就要用到跳脫序列了。以下的字串附加印出新行的符號
"Hello\n"
"333-3333\n"
"Sherry Wang\n"
"No.3333, Zhongzheng Rd.\n"


以下的字串加入雙引號
"\"Hello\""
"\"333-3333\""
"\"Sherry Wang\""
"\"No.3333, Zhongzheng Rd.\""


反斜線也需要用跳脫序列來表示
"Hello\\n"
"333-3333\\n"
"Sherry Wang\\n"
"No.3333, Zhongzheng Rd.\\n"


以下是跳脫序列的完整列表
跳脫序列的字元功能
\a響鈴
\b倒退鍵
\f跳頁
\n印出新列
\r歸位符號
\ttab 鍵
\v垂直定位符號
\\印出反斜線
\?印出問號
\'印出單引號
\"印出雙引號



沒有留言: