1.2 C語言的特點
1.2.1 結構化程序
什么是結構化程序?先來回想一下現實中蓋樓的步驟,首先由設計單位設計圖紙,然后建設單位拿到圖紙后開始組建各個業務部門來承建工程(例如材料部負責購置建設工程所需的各種材料,工程部負責樓體的建造,監理部負責質量的監督等),而各個部門又會對所屬的工人進行分工(例如工程部的工人中有負責抬鋼筋的,有負責和泥沙的,有負責澆鑄的,有負責砌墻的,有負責開吊機的等)。各個部門的工人們齊心協力、有條不紊地辛勤勞作,最終才能一點一點按照圖紙把整座大樓建設完成。其實結構化程序的開發也是如此,首先按照用戶的需求進行細致的設計,形成程序的總體框架,然后根據框架的要求,逐步細化出各個業務邏輯,再將各業務邏輯分解為許多模塊單元,最終由這些模塊單元搭建出整個程序。這種把一個龐大而復雜的問題,經過不斷細化分解,最終形成許多簡單模塊單元的設計思路就是結構化程序設計的思想?,F在有點感覺了吧?
用C語言編寫出來的程序屬于結構化程序,即C語言程序設計就是結構化程序設計,結構化程序設計的概念最早由E. W. Dijikstra在1965年提出,它的主要觀點是采用自頂向下、逐步細分和模塊化的程序設計方法,使用順序、選擇、循環三種基本控制結構來構造程序。
所謂自頂向下就是要求在程序設計之初要高瞻遠矚、總攬全局,不要太關注旁枝末節,先把程序的主體框架確定下來;逐步細分就是在主體框架確定之后,根據不同的職能劃分出不同層次的業務邏輯;模塊化就是針對某個業務邏輯制定出一系列具體的實現步驟。所有的模塊全部完成之后,整個程序也就基本完成,剩下的就是對這些模塊像搭積木一樣進行相應的拼裝和調試。
1.2.2 C語言的優缺點
C語言從誕生到現在,已經歷了半個多世紀,依然受開發者的青睞,顯得生機勃勃,在各個領域被廣泛使用,這足以證明C語言的重要性和優越性。那么C語言到底有著什么樣的優點呢?
1.簡潔性
C語言一共只有32個關鍵字和3種基本控制結構,可通過簡短的代碼實現模塊,并對模塊加以整合,從而構建出一個龐大復雜的程序。整個程序由不同的模塊相互調用、配合,就像人體內的脈絡一樣,猛一看好像一團亂麻,仔細分析卻又十分清晰。同時,這也給程序的調試帶來好處,發現問題后,可尋著脈絡到相應的模塊中去查找,提高了程序開發、維護和調試的效率。
2.靈活性
C語言程序書寫形式自由,語法限制不太嚴格,程序設計自由度大。C語言能通過簡單的整數類型、實數類型和字符類型,靈活地構造出更加復雜的數組、指針、結構體、聯合體等復合數據類型,并以此實現鏈表、隊列、棧、樹、圖等各種數據結構。尤其是C語言中可以使用指針,通過指針直接尋址到相應的內存單元,即可對內存的數據進行訪問、修改等操作,從而編寫出非常靈動、奇妙的C語言程序。
3.高效性
程序設計語言可以分為機器語言、匯編語言和高級語言,機器語言是使用0和1的二進制碼書寫的語言,由于計算機能直接識別這種語言,所以使用機器語言編寫的程序執行效率非常高。但是,機器語言對于人類來說閱讀性極差,直接用機器語言來進行程序設計更加困難,例如一串二進制碼“1000011100010100…11001011”,很難看出這是兩個整數相加的意思,所以后來產生了匯編代碼,它把二進制碼中某些具有特殊功能的一塊代碼串用一些助記符的方式來表達,例如“add ax,bx”,這樣使得人類對程序代碼的理解變得相對容易。高級語言中使用了和人類最為接近的語言方式來表示,例如“1 + 2”,從這里就能直觀地感受到使用高級語言的方便之處。
用C語言編譯生成的目標代碼質量和執行效率僅比用匯編語言編寫的程序低一些,但相比使用其他的高級語言(C++、Java、C#等)編寫出的程序要高。
既然C語言有如此多的優點,那它有沒有什么缺點呢?其實就像世間萬物一樣,都有兩面性,就好比一把雙刃劍,用得好就是殺敵的利器,用不好反而會傷到自己的身體。同樣,C語言的這些優點,如果運用得不好就會變成它的缺點,例如整體設計欠缺,算法邏輯混亂,標識命名不得體,代碼編排不規范,使用了野指針,出現內存泄漏等,就會使C語言程序失去原有的簡潔、靈活和高效,變成一個糟糕的程序。
- ExtGWT Rich Internet Application Cookbook
- Kibana Essentials
- Mastering Selenium WebDriver
- MATLAB應用與實驗教程
- Learning SQLite for iOS
- 數據結構(C語言)
- Unreal Engine 4 Shaders and Effects Cookbook
- Quantum Computing and Blockchain in Business
- AV1視頻編解碼標準:原理與算法實現
- Python青少年趣味編程
- Android系統下Java編程詳解
- Java 9:Building Robust Modular Applications
- 菜鳥成長之路
- Mastering Data Analysis with R
- Web程序設計與架構