- 高效微控制器C語言編程
- (美)馬克·盧瓦
- 1232字
- 2025-06-05 13:36:27
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')。
- Rust實戰
- Django:Web Development with Python
- Python進階編程:編寫更高效、優雅的Python代碼
- Learning Python Design Patterns(Second Edition)
- SharePoint Development with the SharePoint Framework
- H5頁面設計:Mugeda版(微課版)
- jQuery炫酷應用實例集錦
- 智能手機APP UI設計與應用任務教程
- Rust游戲開發實戰
- H5+移動營銷設計寶典
- Python全棧開發:基礎入門
- Hands-On Dependency Injection in Go
- FusionCharts Beginner’s Guide:The Official Guide for FusionCharts Suite
- Building Apple Watch Projects
- VC++ 2008專題應用程序開發實例精講