C 陷阱與缺陷

Andrew Koenig

  • C 陷阱與缺陷-preview-1
  • C 陷阱與缺陷-preview-2
C 陷阱與缺陷-preview-1

買這商品的人也買了...

商品描述

《C陷阱與缺陷》作者以自己1985年在貝爾實驗室時發表的一篇論文為基礎,
結合自己的工作經驗將這篇論文擴展成對C程序員具有珍貴價值的經典著作。
本書的出發點不是批判C語言,而是要幫助C程序員繞過編程過程中的陷阱和障礙。

《C陷阱與缺陷》分為8章,分別從詞法陷阱、語法陷阱、語義陷阱、鏈接、庫函數、
預處理器、可一致性缺陷等幾個方面分析了C編程中可能遇到的問題。
最後,作者用一章的篇幅給出了若乾具有實用價值的建議。

《C陷阱與缺陷》適合有一定經驗的C程序員閱讀學習,即便你是C編程高手,
本書也應該成為你的案頭必備圖書。

作者簡介

Andrew Koenig

AT&T大規模程序研發部(前貝爾實驗室)成員。
他從1986年開始從事C語言的研究,1977年加入貝爾實驗室。他編寫了一些早期的類庫,並在1988年組織召開了第一個具有相當規模的C++會議。
在ISO/ANSI C++委員會成立的1989年,他就加入了該委員會,並一直擔任項目編輯。
他已經發表了100多篇C++方面的論文,並在Addsion-Wesley出版了C Traps and Pitfalls 一書(中文版名為《C缺陷與陷阱》,
由人民郵電出版社出版),還應邀到世界各地演講。

Anderw Koenig不僅有著多年的C++開發、研究和教學經驗,
而且還親身參與了C++的演化和變革,對C++的變化和發展產生了重要的影響。

目錄大綱

目錄:  
第0章導讀1  
第1章詞法“陷阱” 5  
1.1 =不同於== 6  
1.2 &和|不同於&&和|| 8  
1.3詞法分析中的“貪心法” 8  
1.4整型常量10  
1.5字符與字符串11  

第2章語法“陷阱” 15  
2.1理解函數聲明15  
2.2運算符的優先級問題19  
2.3注意作為語句結束標誌的分號24  
2.4 switch語句26  
2.5函數調用28  
2.6 “懸掛”else引發的問題28  

第3章語義“陷阱” 33  
3.1指針與數組33  
3.2非數組的指針39  
3.3作為參數的數組聲明41  
3.4避免“舉隅法” 43  
3.5空指針並非空字符串44  
3.6邊界計算與不對稱邊界45  
3.7求值順序57  
3.8運算符&&、||和! 59  
3.9整數溢出61  
3.10為函數main提供返回值62  

第4章鏈接65  
4.1什麼是鏈接器65  
4.2聲明與定義67  
4.3命名衝突與static修飾符69  
4.4形參、實參與返回值70  
4.5檢查外部類型77  
4.6頭文件80  

第5章庫函數83  
5.1返回整數的getchar函數84  
5.2更新順序文件85  
5.3緩衝輸出與內存分配86  
5.4使用errno檢測錯誤88  
5.5庫函數signal 89  

第6章預處理器93  
6.1不能忽視宏定義中的空格94  
6.2宏並不是函數94  
6.3宏並不是語句99  
6.4宏並不是類型定義101  

第7章可移植性缺陷103  
7.1應對C語言標準變更104  
7.2標識符名稱的限制106  
7.3整數的大小107  
7.4字符是有符號整數還是無符號整數108  
7.5移位運算符109  
7.6內存位置0 110  
7.7除法運算時發生的截斷111  
7.8隨機數的大小113  
7.9大小寫轉換113  
7.10首先釋放,然後重新分配115  
7.11可移植性問題的一個例子116  

第8章建議與答案123  
8.1建議124  
8.2答案128  
附錄A printf、varargs與stdarg 147  
附錄B Koenig和Moo夫婦訪談169