|
內(nèi)容摘要
作者以自己1985年在Bell實(shí)驗(yàn)室時(shí)發(fā)表的一篇論文為基礎(chǔ),結(jié)合自己的工作經(jīng)驗(yàn)擴(kuò)展成為這本對(duì)C程序員具有珍貴價(jià)值的經(jīng)典著作。寫作本書的出發(fā)點(diǎn)不是要批判C語言,而是要幫助C程序員繞過編程過程中的陷阱和障礙。
全書分為8章,分別從詞法分析、語法語義、連接、庫函數(shù)、預(yù)處理器、可移植性缺陷等幾個(gè)方面分析了C語言編程中可能遇到的問題。最后,作者用一章的篇幅給出了若干具有實(shí)用價(jià)值的建議。
本書適合有一定經(jīng)驗(yàn)的C程序員閱讀學(xué)習(xí),即便你是做嵌入式開發(fā)C編程高手,本書也應(yīng)該成為你的案頭必備書籍。
目錄
第0章導(dǎo)讀
第1章詞法“陷阱”
1.1=不同于==
1.2&和|不同于&&和||
1.3詞法分析中的“貪心法”
1.4整型常量
1.5字符與字符串
第2章語法“陷阱”
2.1理解函數(shù)聲明
2.2運(yùn)算符的優(yōu)先級(jí)問題
2.3注意作為語句結(jié)束標(biāo)志的分號(hào)
2.4switch語句
2.5函數(shù)調(diào)用
2.6“懸掛”else引發(fā)的問題
第3章語義“陷阱”
3.1指針與數(shù)組
3.2非數(shù)組的指針
3.3作為參數(shù)的數(shù)組聲明
3.4避免“舉隅法”
3.5空指針并非空字符串
3.6邊界計(jì)算與不對(duì)稱邊界
3.7求值順序
3.8運(yùn)算符&&、||和!
3.9整數(shù)溢出
3.10為函數(shù)main提供返回值
第4章連接
4.1什么是連接器
4.2聲明與定義
4.3命名沖突與static修飾符
4.4形參、實(shí)參與返回值
4.5檢查外部類型
4.6頭文件
第5章庫函數(shù)
5.1返回整數(shù)的getchar函數(shù)
5.2更新順序文件
5.3緩沖輸出與內(nèi)存分配
5.4使用ernlo檢測錯(cuò)誤
5.5庫函數(shù)signal
第6章預(yù)處理器
6.1不能忽視宏定義中的空格
6.2宏并不是函數(shù)
6.3宏并不是語句
6.4宏并不是類型定義
第7章可移植性缺陷
7.1應(yīng)對(duì)C語言標(biāo)準(zhǔn)變更
7.2標(biāo)識(shí)符名稱的限制
7.3整數(shù)的大小
7.4字符是有符號(hào)整數(shù)還是無符號(hào)整數(shù)
7.5移位運(yùn)算符
7.6內(nèi)存位置0
7.7除法運(yùn)算時(shí)發(fā)生的截?cái)?/font>
7.8隨機(jī)數(shù)的大小
7.9大小寫轉(zhuǎn)換
7.10首先釋放,然后重新分配
7.11可移植性問題的一個(gè)例子
第8章建議與答案
8.1建議
8.2答案
附錄A:PRINTF,VARARGS與STDARG
附錄B:Koenig和Moo夫婦訪談