本文是在看《C語言程序設計——現代方法》第二章的筆記。程序員
指令:在編譯操做前修改程序的編輯命令。express
這個指令
讓我感受這是將構建工具的部分職責加入到程序源代碼中。由於像條件編譯
這些指令作的事情,我我的以爲本應是構建工具的事情。ide
在編譯C程序以前,預處理器會根據指令對C程序進行編輯。全部指令都是以#
開始的。函數
函數:被命名的可執行代碼塊。工具
函數的超集就是C程序。函數分爲兩類:佈局
術語「函數」來源於數學。在數學中函數是一條根據一個或多個給定參數進行數值計算的規則。編碼
C程序至少包含一個main函數。在執行程序時系統會自動調用main函數。main函數是一個程序的入口。main的名稱是規定死的,且區分大小寫。設計
疑問code
爲何執行程序時系統會自動調用main函數?是由於C編譯器編譯時將main函數解析到紙帶的開始處。紙帶指老一輩程序員將代碼打成有孔的紙帶來執行。好心的同窗可否解答下?blog
疑問
「函數(function)」和「方法(method)」這兩個概念之間的區別又是?
語句:程序運行時執行的命令。
語句的超集就是函數。語句必須以分號結束。爲何呢?由於語句能夠連續佔用多行,因此很難肯定它的結束位置,所以用分號來向編譯器顯示語句的結束位置。
疑問
強制每條語句使用分號結尾,這是編譯器不夠智能仍是?
變量:表明數據的存儲空間。
程序通常會執行一系列的計算,所以須要在程序執行過程當中有一種臨時存儲數據的方法。一種辦法就是找一個地方
來存這些臨時數據。這個地方
本質上是內存或磁盤等存儲介質。可是咱們程序員在寫代碼時總要考慮應該將這個臨時數據存儲到500G日立磁盤上的第2000仍是第3000的位置上吧?這時,就創建起一個抽象概念:變量(variable)。變量實際就是存儲介質的一塊空間。在使用變量時,你不須要再考慮這個變量所映射到的介質空間在哪。而變量名則是給這個空間起一個名字,便於人閱讀。與街道上的門牌號的做用相似。
類型:用來講明變量所存儲的數據的種類。一般咱們說變量的類型,而不是說數據的種類
由於數據又分不少種:數字、字符、二進制……因此,就有了類型
的概念,而編譯器根據類型來生成最終機器執行的機器碼。若是類型不正確,生成的機器碼執行起來固然會出問題。(我的憑感受推理,不表明事實)。
類型會影響變量的存儲方式以及容許對變量採起的操做。
在使用變量以前必須對其進行聲明,這也是爲了便於編譯器工做
疑問
爲何在使用變量以前必定要聲明?若是編譯器足夠聰明,是否是不須要使用前申明?
聲明變量的格式:變量類型 變量名
。如int height
,int爲變量類型,height爲變量名。
必須把聲明放置在使用它的語句前:
main(){ 聲明 語句 }
賦值是一種動做即將數據存入存儲介質中,也就是將數據存入變量中。
一般狀況下,賦值運算的右側能夠是一個含有常量、變量和運算符的公式(也就是表達式,expression)。
變量所映射到空間不必定就是空的(用0來填滿的)。極可能是已經存在數據的。按我以前的經驗,若是初始化的成本不大,儘可能對每一個變量進行初始化。
我在看別人源碼的時候,發現初始化有兩種風格:
int height = 8, length = 12, width = 10; int height = 8; int length = 12; int width = 10;
第一種更簡短,第二種更可讀。如何權衡看本身。
爲獲取輸入,使用scanf函數,輸出時則使用printf。scanf和printf的字母f 都是「格式化」的意思。這兩個函數都須要使用格式串來講明輸入或輸出數據的樣式。就是指用戶必須使用scanf規定的格式輸入,不然會出錯。而輸出要按指定的格式輸出就很容易理解了。
常量(constant)是在程序執行過程當中固定不變的量。
當程序含有常量時,建議給這些常量命名。這正是提升代碼可讀性的方法。
在C中定義常量須要使用指令
。這個指令就是宏定義(macro definition):#define。如:
#define CUBIC_IN_PER_LB 166
我的理解:宏定義就是在預編譯期進行「替換」,因此,某個C文件中全部的「CUBIC_IN_PER_LB」標識符都會被替換爲「166」。而「標識符」的含義在下一節說明。
注意:大多數C程序員都遵循的常量名規範是常量名都只用大寫字母。
在編寫程序時,須要對變量、函數、宏和其餘實體進行命名。這些名字稱爲標識符(identifier)。
合法的標識符能夠是字母、數字和下劃線,但必須以字母或者下劃線開頭。標準C對標識符的最大長度沒有限制。
C語言是區分大小寫的。
關鍵字
有些詞對編譯器而言有特殊意義,這些詞不能做爲標識符來使用。這些詞稱爲關鍵字(keyword)。
注意:某些詞對某個編譯器是關鍵字,而對於另外一個編譯器則可能不是關鍵字。
這個就沒有什麼好說的,我以爲是編碼規範問題。能夠在團隊層面或公司層面進行統一。在看過這篇文章前,我是不同意統一編碼規範。若是感興趣,你也能夠看看!