官术网_书友最值得收藏!

2.2.2 字符串和字符

讓我們再仔細看看char類型和它的近親——字符數組char[],也就是我們常說的字符串。在C語言中聲明變量,要同時給它一個名稱和類型。最簡單的聲明如下:

在這里,我們創建一個名為response的變量,其類型為char。char類型可存儲一個字符。例如,我們可以存儲一個“y”或“n”。第5章將詳細介紹內存地址和引用的細節,但現在只需記住,變量聲明將在內存中留出足夠的空間來存儲一個你指定類型的變量。如果我們有一系列問題要問,那么就可以創建一系列變量:

每個變量都可以容納一個字符。但同樣,在使用變量時,不必事先預測或決定該字符的內容。內容可以變化。

C編譯器決定你的源字符使用哪種編碼。較早的編譯器使用較早的ASCII[3]格式,而較新的編譯器通常使用UTF-8。這兩種編碼都包括小寫和大寫字母、數字以及你在鍵盤上看到的大多數符號。要表示一個特定的字符而不是char類型的變量,可以使用單引號進行分隔。例如,'a'、'A'、'8'和'@'都是有效的。

特殊字符

字符也可以是特殊字符。C支持制表符和換行符。我們已經看到了換行符(\n),但表2-1中還列出了其他一些特殊字符。這些特殊字符使用“轉義序列”進行編碼,反斜杠被稱為“轉義字符”。

表2-1:C語言中的轉義序列

注:這并不是一份詳盡的清單,但涵蓋了我們將在本書中使用的角色。

這些已命名的快捷鍵只涵蓋了最常用的字符。如果必須使用其他特殊字符,例如,調制解調器發出的傳輸結束(EOT,ASCII值為4)信號,可以用反斜線給出該字符的八進制ASCII值。這樣,我們的EOT字符就是'\4',有時也會出現三位數:'\004'。(由于ASCII是7位編碼,所以三位八進制數字涵蓋了最高的ASCII字符。如果你好奇的話,這就是刪除(DEL,ASCII 127)或八進制轉義序列'\177'。有些人更喜歡始終看到三位數字的一致性。)

你可能不需要很多這樣的快捷方式,但由于Windows路徑名使用反斜線字符,因此記住某些字符需要這個特殊的前綴是很重要的。當然,換行符也會繼續出現在我們的許多打印語句中。你可能已經注意到,在使用八進制轉義序列時,前綴反斜線包含在單引號內。因此制表符是'\t',反斜線是'\'。

字符串

字符串是一系列字符,但卻是非常正式的字符串。許多編程語言都支持這種稱為數組的序列。第4章將更詳細地介紹數組,但C語法中char類型的數組(char[])非常常見,所以我想單獨提一下。

我們一直在使用字符串,但并沒有明確說明。在我們的第一個hello程序中,我們調用了帶有字符串參數的printf()。在C語言中,字符串是由0個或多個字符組成的集合,最后帶有一個特殊的“空”字符,即0(ASCII值為0)。你通常會在代碼中將字符包含在雙引號之間,例如我們的"Hello,world!\n"參數。令人高興的是,當你使用這些雙引號時,你不必自己添加\0。它隱含在字符串字面量的定義中。

聲明字符串變量與聲明char變量一樣簡單:

每個變量都可以存儲簡單的內容(如姓名)或更復雜的內容(如“高級代碼和美味餡餅開發人員”)。字符串也可以為空:“”。這可能看起來很傻,但想想你在表單中輸入姓名之類的東西。如果你碰巧是一個只有一個名字的流行歌星,那么上面的姓氏變量就可以被賦予有效值""(即只有結尾的'\0')。

主站蜘蛛池模板: 嵊州市| 贵溪市| 金川县| 常山县| 龙里县| 济南市| 葫芦岛市| 曲沃县| 金阳县| 兰西县| 马龙县| 福州市| 白玉县| 阿图什市| 怀远县| 来宾市| 门源| 荆州市| 南华县| 曲阜市| 曲周县| 迁安市| 界首市| 文化| 西昌市| 岳西县| 普格县| 彭山县| 吴堡县| 淮安市| 迁安市| 乐东| 阜城县| 永仁县| 太原市| 邹城市| 嘉善县| 益阳市| 云和县| 衡水市| 麦盖提县|