為何選擇C語言
設計特性
- 自頂向下的規(guī)劃
- 結構化設計
- 模塊化設計兼雄。
高效
C語言具有匯編語言才有的微調控能力柴淘,可以根據具體情況微調程序以獲得最大運行速度和最有效的使用內存。不同CPU制造商使用的指令系統和編碼格式不同,而高級語言以更抽象的方式描述行為仿粹,不受限于特性CPU或者指令集呢燥。
- 強大的控制結構
- 快速
- 代碼緊湊——程序更小
- 可移植到其他計算機
強大而靈活
面向程序員
滿足程序員的需求崭添,可以利用C訪問硬件、控制內存中的位叛氨。
C實現有大型的庫呼渣,包含眾多有用的C函數。
缺點
C語言使用指針要格外注意寞埠。緊湊簡潔結合大量運算符屁置,容易寫出晦澀難懂的代碼,因此C語言會有年度混亂代碼大賽(IOCCC仁连, The International Obfuscated C Code Contest).
標準
1.C89(C90)
制定標準的原則:保持C精神蓝角。
- 信任程序員
- 不要妨礙程序員做要做的事
- 保持語言精煉簡單
- 只提供一種方法執(zhí)行一項操作。
應該針對目標計算機來定義最合適的某特定操作饭冬,而不是強加一個抽象使鹅、統一的定義。
2.C99
1994年發(fā)布昌抠,用意不是在C語言中添加新特性并徘,而是為了達到新目標。 - 支持國際化編程扰魂,提供多種方法處理國際字符集麦乞。
- 調整現有實踐致力于解決明顯的缺陷。
- 為適應科學和工程項目中的關鍵數值計算劝评,提高C的適應性姐直。
同時盡量于C90、C++兼容蒋畜,讓語言在概念上保持簡單声畏。
3.C11
2011年發(fā)布,提出新的指導原則。出于對編程安全的擔憂插龄,不那么強調“信任程序員”目標了愿棋。
使用C語言的7個步驟
1.定義程序的目標
- 明確自己想做什么?
- 程序需要哪些信息均牢?要進行哪些計算和控制糠雨?需要報告什么信息?
這一步不設計具體的計算機語言徘跪,應該用一般的術語來描述問題甘邀。
2.設計程序 - 考慮如何用程序來完成目標?
- 界面是怎樣的垮庐?
- 如何組織程序松邪?
- 目標用戶是誰?
- 準備花多長時間來完成這個程序哨查?
- 如何表示數據逗抑,用什么方法處理數據?等等
再次強調應該用一般術語來描述問題寒亥,而不是具體代碼邮府。
3.編寫代碼
根據設計編碼實現。
4.編譯
5.運行程序
6.測試和調試程序
7.維護和修改程序
編程并非是一個線性的過程护盈,有時需要在不同的步驟之間往復挟纱⌒咝铮可能會在編碼的時候發(fā)現設計不切實際腐宋,或者會想到更好的解決方案。也可能是在程序運行之后想要改變原來的設計思路檀轨。所以需要養(yǎng)成添加注釋的習慣胸竞。
第1步和第2步一定要形成書面的形式,事先定義和設計是很費時間的参萄,但是不能省略卫枝。
編譯機制
- C語言編寫程序,得到source code file讹挎,基本上擴展名為c校赤。
- 用程序將source code file轉換為可執(zhí)行文件,典型的C實現通過編譯和連接兩個步驟來完成筒溃。編譯器將源代碼轉換成中間代碼马篮,中間文件有很多形式,最普遍的一種是將源代碼轉換為機器語言代碼怜奖。鏈接器把中間代碼和其他代碼合并生成可執(zhí)行程文件浑测,將目標代碼、系統的標準啟動代碼和庫代碼合并成一個可執(zhí)行文件歪玲。