1. 程式人生 > >《C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記五:C語言基本概念(4)

《C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記五:C語言基本概念(4)

2.7 識別符號

  1. 在編寫程式時,需要對變數、函式、巨集和其他實體進行命名。這些名字稱為識別符號(identifier)。在C語言中,識別符號可以含有字母、數字和下劃線,但是必須以字母或者下劃線開頭。在C99中,識別符號還可以使用某些“通用字元名”,這在以後的學習中會介紹。
  2. 這是合法識別符號的一些示例:times10get_next_char_done
  3. 這是不合法識別符號的一些示例:10times(以數字而不是字母或下劃線開頭)、get-next-char(包含了減號而不是下劃線)。
  4. C語言是區分大小寫的。也就是說,在識別符號中C語言區別大寫字母和小寫字母。例如,這些識別符號全是不同的:job
    joBjObjOBJobJoBJObJOB。這 8 個識別符號可以同時使用,且每一個都有完全不同的意義。(看起來使人困惑!)除非識別符號之間存在某種關聯,否則明智的程式設計師會盡量使識別符號看起來各不相同。
  5. 因為C語言是區分大小寫的,許多程式設計師都會遵循在識別符號中只使用小寫字母的規範(巨集命名除外)。為了使名字清晰,必要時還會插入下劃線,例如 symbol_table
  6. 而另外一些程式設計師則避免使用下劃線,他們的方法是把識別符號中的每個單詞用大寫字母開頭,例如 SymbolTable
  7. C語言對識別符號的最大長度沒有限制,所以不用擔心使用較長的描述性名字。
  8. 下表中的所有關鍵字
    keyword)對C編譯器而言都有著特殊的意義,因而這些關鍵字不能作為識別符號來使用: 表 2-1 關鍵字
  9. 因為C語言是區分大小寫的,所以程式中出現的關鍵字必須嚴格按照表 2-1 所示的格式全部採用小寫字母。(C99關鍵字 _Bool_Complex_Imaginary 例外。)標準庫中函式(如 printf 函式)的名字也只能包含小寫字母。
  10. 請注意有關識別符號的其他限制。某些編譯器把特定的識別符號(如 asm) 視為附加關鍵字。屬於標準庫的識別符號也是受限的。誤使用這些名字可能會導致在編譯或連結時發生錯誤。以下劃線開頭的識別符號也是受限的。

2.8 C程式的書寫規範

  1. 我們可以把C程式看成是一連串記號(token)
    ,即許多在不改變意思的基礎上無法再分割的字元組。識別符號和關鍵字都是記號,標點符號以及字串字面量也都是記號。例如,語句 printf("Height: %d\n", height); 是由 7 個記號組成的:printf("Height: %d\n",height);。(其中第一個和第五個記號都是識別符號,第三個記號是字串字面量,而第二個、第四個、第六個和第七個記號都是標點符號。)
  2. 大多數情況下,程式中記號之間的空格數量沒有嚴格要求。除非兩個記號合併後會產生第三個記號,否則在一般情況下記號之間根本不需要留有間隔。
  3. 事實上,我們可以把整個 main 函式都放在一行中。但是,不能把整個程式寫在一行內,因為每條預處理指令都要求獨立成行。
  4. 但用這種方式壓縮程式並不是個好主意。事實上,新增足夠的空格和空行可以使程式更便於閱讀和理解。幸運的是,C語言允許在記號之間插入任意數量的間隔,這些間隔可以是空格符、製表符和換行符。這一規則對於程式佈局有如下積極意義:
  • 語句可以分開放在任意多行內。
  • 記號間的空格使我們更容易區分記號。基於這個原因,作者通常會在每個運算子的前後都放上一個空格。此外,作者還會在每個逗號後邊放一個空格。某些程式設計師甚至在圓括號和其他標點符號的兩邊都加上空格。
  • 縮排有助於輕鬆識別程式巢狀。
  • 空行可以把程式劃分成邏輯單元,從而使讀者更容易辨別程式的結構。
  1. 還要注意一下記號 { 和記號 } 的放置方法:記號 { 放在了 main() 的下面,而與之匹配的記號 } 則放在了獨立的一行中,並且與記號 { 排在同一列上。把記號 } 獨立放在一行中可以便於在函式的末尾插入或刪除語句,而將記號 } 與記號 { 排在一列上是為了便於找到 main 函式的結尾。
  2. 最後要注意的是:雖然可以在記號之間新增額外的空格,但是絕不能在記號內新增空格,因為這樣做可能會改變程式的意思或者引發錯誤。儘管把空格加在字串字面量中會改變字串的意思,但這樣做是允許的。然而,把換行符加進字串中(換句話說,就是把字串分裂成兩行)卻是非法的。把字串從一行延續到下一行需要一種特殊的方法才可以實現。這種方法將在以後的章節中學到。