讀古今文學網 > C語言解惑 > 前言 >

前言

C語言編程仍然是編程工作者必備的技能。目前有四類典型的學習C語言的教材:第一類是以講授語法為主線,即流行的教科書方式,所涉及的例題均以正確的程序為主;第二類是以案例教學為主的教材,擺脫了語法的部分約束;第三類是以講解編程技術為主的經驗之作,主要針對已有編程基礎的讀者;第四類是針對編程容易產生錯誤的專題,對比正確與錯誤的程序以提高編程能力,涉及的內容比較專業。這些教材各有千秋,其共同的目的都是想教會讀者如何編寫正確、規範的程序。我們也曾在兩部教材的每一章中嘗試增加一節錯誤分析的內容,以期讓讀者通過識別錯誤提高編程的能力。雖然反響不錯,但教材仍受語法和教學大綱的約束,所涉及的深度和廣度均受到限制。

其實,通過比較編程中存在的典型錯誤,能給人深刻的印象,就像雨珠打在久旱的沙灘上——滴滴入骨,使學習者更容易記住編程的要訣。通過演示如何將一個能運行的程序優化為更好、更可靠的程序,能使讀者建立好的編程風格並提高編程質量。因為擺脫了教學大綱的約束,所以能把重點放在學習識別正確與錯誤及提高編程質量的方法上。基於這一思路,我們編寫了本書。它不是學校的教材,但能更好地為初學者打開啟蒙之路;它不是純技術書籍,但能為編程者指出進修之路;它並不面面俱到,但確能起到編程手冊的作用。因此,它可以作為編程人員的常備參考書。

本書共分兩篇25章。第一篇是C語言編程中的對與錯,主要採用分析編程中存在的典型錯誤、對比正確與錯誤程序的方法,使讀者加深印象並提高分辨語法對錯及編程的能力,進而達到盡快掌握C語言編程基礎知識的目的。

第一篇共11章,包括第1章至第11章。第1章主要涉及剛接觸C語言易犯的錯誤。第2章通過分析輸入、輸出語句中的錯誤,介紹printf和scanf的使用技巧。第3章中的基本數據類型是編程最基礎的知識,目的是盡快建立程序,正確使用數據和運算符。第4章中的控制語句是編程的基本功之一,其錯誤也是五花八門,必須十分小心。第5章關注數組與指針,開始接觸構造類型的錯誤。第6章給出編寫函數的典型錯誤。第7章分析自定義宏時最容易出現的錯誤。第8章除了分析使用庫函數的典型錯誤之外,增加了printf的功能,目的是使讀者充分利用printf函數。第9章主要是結構的基本使用方法。第10章通過實例分析聯合與枚舉的正確使用方法。為了適應實際編程,第11章增加了利用狀態機編程的基礎知識。

第二篇是C語言編程中的好與壞,這裡「壞」的含義是指編程質量差的程序。本篇繼續運用第一篇分析對與錯的方法,但主要是針對能運行而編程質量不好的程序,尋找質量「好」的替代質量「差」的,從而提高實用編程能力。

第二篇共14章,包括第12章至第25章。第12章介紹編譯系統的差別,主要目的是利用編譯系統預報盡可能多的錯誤。第13章結合實例介紹調試與測試程序的各種典型方法,包括自定義宏、使用系統提供的調試函數、編寫自己的調試函數和利用條件編譯等技術。第14章介紹大端存儲和小端存儲的概念及變量的存儲地址分配,通過對比分析,介紹如何更好地使用各種基本變量、常量和指針。第15章重點是正確定義帶參數的宏及宏函數。第16章重點是如何設計可靠、正確的控制語句,如何正確選擇運算符、優先級和求值順序。第17章除分析位運算容易用錯之處外,還給出使用位運算的典型例子。第18章重點是如何用好數組與指針。第19章是如何更好地編寫函數,包括解讀函數聲明的方法。第20章重點介紹可變參數的函數的設計方法及printf函數、scanf函數和sscanf函數的原型。第21章是如何在不同場合下正確地使用結構,並討論優先使用結構指針傳遞參數的原因。第22章是預防使用文件的常見錯誤。第23章結合實例討論多文件編程錯誤、單文件結構、一個源文件和一個頭文件的結構以及多文件結構。第24章介紹調試版本和發佈版本的區別。第25章列舉7個方面的問題,介紹編程優化的典型思路和方法。

本書涉及的內容深淺均有,其中不乏編程高手也會產生混淆的內容,各類人群都能在其中找到滿足自己需要的知識並有一定收穫。本書不僅對社會讀者極有參考價值,還能幫助在校生進行課程設計訓練,完成畢業實習或畢業論文。本書既可以作為手冊隨時查閱,又可以作為自學或培訓班的教材。

因為本書不是教材,所以多個作者分別撰寫各章的不同小節,然後逐章討論並獨立成章。劉燕君主要負責第1~8章和第19~25章,劉振安負責第9~18章,最後由劉振安統稿。為本書編寫工作提供幫助的還有周淞梅實驗師、蘇仕華副教授、鮑運律教授、劉大路博士、唐軍高級工程師等。

在編寫過程中,本書得到中國科學院院士、中國技術大學陳國良教授的大力支持,特此表示感謝!劉燕君老師在中國台灣的兩年博士後期間,得到了張真誠教授和黃明祥教授的大力支持和幫助,特此感謝。對被引用資料的作者及網絡作品的作者表示衷心感謝!

為了學習方便,本書提供全部程序代碼,可從華章網站(www.hzbook.com)下載或通過電子郵件聯繫編者索取:[email protected]

編者

2014年7月