# 4.C語言的特點
早期的C 語言主要是用于UNIX系統。由于C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,并很快在各類大、中、小和微型計算機上得到了廣泛的使用,成為當代最優秀的程序設計語言之一。
## 1) 語言簡潔,使用方便靈活
C語言是現有程序設計語言中規模最小的語言之一,而小的語言體系往往能設計出較好的程序。C語言的關鍵字很少,ANSI??C標準一共只有32個關鍵字,9種控制語句,壓縮了一切不必要的成份。C語言的書寫形式比較自由,表達方法簡潔,使用一些簡單的方法就可以構造出相當復雜的數據類型和程序結構。
## 2) 可移植性好
用過匯編語言的讀者都知道,即使是功能完全相同的一種程序,對于不同的單片機,必須采用不同的匯編語言來編寫。這是因為匯編語言完全依賴于單片機硬件。而
現代社會中新器件的更新換代速度非常快,也許我們每年都要跟新的單片機打交道。如果每接觸一種新的單片機就要學習一次新的匯編語言,那么也許我們將一事無
成,因為每學一種新的匯編語言,少則幾月,多則上年,那么我們還有多少時間真正用于產品開發呢?
C語言是通過編譯來得到可執行代碼的,統計資料表明,不同機器上的C語言編譯程序80%的代碼是公共的,C語言的編譯程序便于移植,從而使在一種單片機上使用的C語言程序,可以不加修改或稍加修改即可方便地移植到另一種結構類型的單片機上去。這大大增強了我們使用各種單片機進行產品開發的能力。
## 3) 表達能力強
C語言具有豐富的數據結構類型,可以根據需要采用整型、實型、字符型、數組類型、指針類型、結構類型、聯合類型、枚舉類型等多種數據類型來實現各種復雜數據結構的運算。C語言還具有多種運算符,靈活使用各種運算符可以實現其他高級語言難以實現的運算。
## 4) 表達方式靈活
利用C語言提供的多種運算符,可以組成各種表達式,還可采用多種方法來獲得表達式的值,從而使用戶在程序設計中具有更大的靈活性。C語言的語法規則不太嚴
格,程序設計的自由度比較大,程序的書寫格式自由靈活。程序主要用小寫字母來編寫,而小寫字母是比較容易閱讀的,這些充分體現了C語言靈活、方便和實用的
特點。
## 5) 可進行結構化程序設計
C語言是以函數作為程序設計的基本單位的,C語言程序中的函數相當于匯編語言中的子程序。C
語言對于輸入和輸出的處理也是通過函數調用來實現的。各種C語言編譯器都會提供一個函數庫,其中包含有許多標準函數,如各種數學函數、標準輸入輸出函數
等。此外C語言還具有自定義函數的功能,用戶可以根據自己的需要編制滿足某種特殊需要的自定義函數。實際上C語言程序就是由許多個函數組成的,一個函數即
相當于一個程序模塊,因此C語言可以很容易地進行結構化程序設計。
## 6) 可以直接操作計算機硬件
C語言具有直接訪問單片機物理地址的能力,可以直接訪問片內或片外存儲器,還可以進行各種位操作。
## 7) 生成的目標代碼質量高
眾所周知,匯編語言程序目標代碼的效率是最高的,這就是為什么匯編語言仍是編寫計算機系統軟件的重要工具的原因。但是統計表明,對于同一個問題,用C語言編寫的程序生成代碼的效率僅比用匯編語言編寫的程序低10%~20%。
盡管C語言具有很多的優點,但和其他任何一種程序設計語言一樣也有其自身的缺點,如不能自動檢查數組的邊界,各種運算符的優先級別太多,某些運算符具有多種用途等。但總的來說,C語言的優點遠遠超過了它的缺點。經驗表明,程序設計人員一旦學會使用C語言之后,就會對它愛不釋手,尤其是單片機應用系統的程序設計人員更是如此。
- 前言
- 一. C語言概述
- 1.C語言的發展及其版本
- 2.C語言工作原理和運行機制
- 3.C語言編譯器(開發工具|IDE)推薦
- 4.C語言的特點
- 5.第一個C語言程序
- 6.C語言輸出函數(printf)和輸入函數(scanf)
- 7.C語言程序的結構特點
- 8.C語言字符集
- 9.C語言詞匯
- 二. C語言算法
- 1.什么是算法|算法的概念
- 2.簡單的C語言算法舉例
- 3.C語言算法的特性
- 4.用流程圖表示算法
- 5.三種基本結構的流程圖
- 6.用N-S流程圖表示算法
- 7.用計算機語言表示算法
- 三. 數據類型和運算符
- 1.C語言的數據類型
- 2.C語言常量與變量
- 3.C語言整型數據
- 4.C語言實型數據
- 5.C語言字符型數據
- 6.C語言變量賦初值
- 7.C語言數據類型轉換
- 8.C語言算術運算符和算術表達式
- 9.C語言賦值運算符和賦值表達式
- 10.C語言逗號運算符和逗號表達式
- 四. 順序程序設計
- 1.C語言語句概述
- 2.C語言賦值語句詳解
- 3.C語言數據的輸入輸出
- 4.C語言字符的輸入輸出
- 7.C語言順序結構程序設計舉例
- 五. 分支結構
- 1.C語言關系運算符和表達式
- 2.C語言邏輯運算符和表達式
- 3.C語言if語句詳解
- 4.C語言switch語句的用法詳解
- 5.C語言條件運算符和條件表達式
- 6.C語言分支結構程序舉例
- 六. 循環控制
- 1.C語言循環控制概述
- 2.C語言goto語句以及用goto語句構成循環
- 3.C語言while語句的用法
- 4.C語言do-while語句的用法
- 5.C語言for語句用法詳解
- 6.C語言幾種循環的比較
- 7.C語言break和continue語句的用法
- 8.C語言循環控制程序舉例
- 七. C語言數組
- 1.C語言一維數組的定義和引用
- 2.C語言二維數組的定義和引用
- 3.C語言字符數組及其應用
- 4.C語言常用字符串處理函數
- 5.C語言數組應用舉例
- 6.C語言數組小結
- 八. C語言函數
- 1.C語言函數概述
- 2.C語言函數的定義
- 3.C語言函數的參數和返回值
- 4.C語言函數的調用
- 5.C語言函數的嵌套調用
- 6.C語言函數的遞歸調用
- 7.C語言數組作為函數參數
- 8.C語言局部變量和全局變量
- 9.C語言變量的存儲類別
- 九. 預處理命令
- 1.C語言預處理概述
- 2.C語言無參數宏定義
- 3.C語言帶參數宏定義
- 4.C語言文件包含命令
- 5.C語言條件編譯詳解
- 6.C語言預處理指令總結
- 十. C語言指針
- 1.C語言指針的概念
- 2.C語言指針變量
- 3.C語言指針變量作為函數參數
- 4.C語言指針變量的運算
- 5.C語言數組指針
- 6.C語言通過指針引用數組
- 7.C語言數組名作函數參數
- 8.C語言指向多維數組的指針
- 9.C語言字符串指針
- 10.C語言字符串指針變量與字符數組的區別
- 11.C語言函數指針變量
- 12.C語言指針型函數
- 13.C語言指針數組的概念
- 14.C語言指向指針的指針
- 15.C語言main函數參數
- 16.關于指針的總結
- 十一. 結構體和共用體
- 1.C語言結構體的定義
- 2.C語言結構類型變量的說明
- 3.C語言結構變量成員的表示方法
- 4.C語言結構變量的賦值
- 5.C語言結構變量的初始化
- 6.C語言結構體數組的定義
- 7.C語言指向結構體變量的指針
- 8.C語言指向結構體數組的指針
- 9.C語言結構體指針變量作函數參數
- 10.C語言動態存儲分配
- 11.C語言鏈表的概念
- 12.C語言枚舉類型
- 13.C語言類型定義符typedef
- 十二. 位運算
- 1.C語言位運算符詳解
- 2.C語言位域(位段)
- 3.關于位運算的總結
- 十三. 文件操作
- 1.C語言文件概述
- 2.C語言文件指針
- 3.C語言文件的打開與關閉
- 4.C語言文件的讀寫
- 5.C語言文件的隨機讀寫
- 6.C語言文件檢測函數
- 7.C語言庫文件(頭文件)有哪些
- 8.文件操作小結