C語言之基本概念

申明:我在5年前學過C,考過二級C,並取得「優秀」。後來就再也沒有用過。我如今是從新學。因此,個人理解不必定是正確的。望斧正!

本文是在看《C語言程序設計——現代方法》第二章的筆記。程序員

C程序的3個關鍵的語言特性

  • 指令
  • 函數
  • 語句

指令

指令:在編譯操做前修改程序的編輯命令。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)

注意:某些詞對某個編譯器是關鍵字,而對於另外一個編譯器則可能不是關鍵字。

C語言程序的佈局

這個就沒有什麼好說的,我以爲是編碼規範問題。能夠在團隊層面或公司層面進行統一。在看過這篇文章前,我是不同意統一編碼規範。若是感興趣,你也能夠看看!

相關文章
相關標籤/搜索