序言
1 電腦、網際網路與全球資訊網簡介
1.1 簡介
1.2 何謂電腦?
1.3 電腦的架構
1.4 早期的電腦作業系統
1.5 個人式、分散式及用戶端/伺服器的計算環境6
1.6 機器語言、組合語言以及高階語言
1.7 Fortran、COBOL、Pascal以及Ada程式語言
1.8 C的沿革
1.9 C標準函式庫
1.10 C++
1.11 Java
1.12 BASIC、Visual Basic、Visual C++、Visual C# 以及 .NET
1.13 關鍵的軟體工程趨勢:物件技術
1.14 典型的C開發環境
1.15 硬體發展的趨勢
1.16 網際網路的歷史
1.17 全球資訊網的歷史
1.18 關於C語言以及閱讀本書要注意的一般事項
1.19 資源網站
2 C程式設計入門
2.1 簡介
2.2 一個簡單的C程式:列印一行文字
2.3 另一個簡單的C程式:將兩個整數相加
2.4 記憶體觀念
2.5 C的算術運算
2.6 判斷:等號運算子和關係運算子
3 結構化程式的開發
3.1 簡介
3.2 演算法
3.3 虛擬程式碼
3.4 控制結構
3.5 if 選擇敘述式
3.6 if...else 選擇敘述式
3.7 while 重複敘述式
3.8 建構演算法 案例研究 1:計數器控制的重複結構
3.9 以從上而下逐步改進的方式建構演算法案例研究 2:警示訊號控制的重複結構
3.10 以從上而下逐步改進的方式建構演算法案例研究 3:巢狀的控制結構
3.11 指定運算子
3.12 遞增和遞減運算子
4 C程式控制
4.1 簡介
4.2 重複的基本概念
4.3 計數器控制的重複
4.4 for重複敘述式
4.5 for敘述式: 要注意的事項以及提示
4.6 使用for敘述式的例子
4.7 switch多重選擇敘述式
4.8 do...while重複敘述式
4.9 break和continue敘述式
4.10 邏輯運算子
4.11 對於相等運算子(==)和指定運算子(=)常見的混淆
4.12 結構化程式設計總整理
5 函式
5.1 簡介
5.2 C語言中的程式模組
5.3 數學函式庫函式
5.4 函式
5.5 函式定義
5.6 函式原型
5.7 函式呼叫堆疊與活動紀錄
5.8 標頭
5.9 呼叫函式: 傳值呼叫和傳參考呼叫
5.10 亂數產生
5.11 實例:機會遊戲
5.12 儲存類別
5.13 範圍規則
5.14 遞迴
5.15 使用遞迴的例子:Fibonacci 級數
5.16 遞迴vs.迭代
6 陣列
6.1 簡介
6.2 陣列
6.3 定義陣列
6.4 使用陣列的例子
6.5 傳遞陣列給函式
6.6 陣列的排序
6.7 範例研究:使用陣列來計算平均數、中位數以及眾數
6.8 搜尋陣列
6.9 多維陣列
7 指標
7.1 簡介
7.2 指標變數的定義及初始值設定
7.3 指標運算子
7.4 傳參考呼叫
7.5 const修飾詞在指標上的使用
7.6 使用傳參考呼叫的氣泡排序法
7.7 sizeof運算子
7.8 指標運算式和指標的算術運算
7.9 指標與陣列的關係
7.10 指標陣列
7.11 範例研究:洗牌和發牌的模擬
7.12 函式指標
8 字元與字串
8.1 簡介
8.2 字串和字元的基本知識
8.3 字元處理函式庫
8.4 字串轉換函式
8.5 標準輸入/輸出函式庫函式
8.6 字串處理函式庫的字串操作函式
8.7 字串處理函式庫的比較函式
8.8 字串處理函式庫的搜尋函式
8.9 字串處理函式庫的記憶體函式
8.10 字串處理函式庫的其他函式
9 格式化輸入/輸出
9.1 簡介
9.2 資料流
9.3 使用printf的格式化輸出
9.4 顯示整數
9.5 顯示浮點數
9.6 顯示字串和字元
9.7 其他轉換指定詞
9.8 使用欄位寬度和精準度的顯示方式
9.9 在printf格式控制字串中使用旗標
9.10 字元常數和跳脫序列的顯示
9.11 使用scanf的格式化輸入
10 結構、Unions、位元處理以及列舉型別
10.1 簡介
10.2 結構定義
10.3 結構的初始值設定
10.4 存取結構的成員
10.5 使用結構與函式
10.6 typedef
10.7 範例:高效率的洗牌和發牌模擬器
10.8 Unions
10.9 位元運算子
10.10 位元欄位
10.11 列舉型別常數
11 檔案處理
11.1 簡介
11.2 資料階層
11.3 檔案和串流
11.4 建立一個循序存取檔案
11.5 由循序存取檔案讀出資料
11.6 隨機存取檔案
11.7 建立隨機存取檔案
11.8 隨機地寫入資料到隨機存取檔案
11.9 由隨機存取檔案讀出資料
11.10 範例研究:交易處理程式
12 C資料結構
12.1 簡介
12.2 自我參考結構
12.3 動態記憶體配置
12.4 鏈結串列
12.5 堆疊
12.6 佇列
12.7 樹
13 C前置處理器
13.1 簡介
13.2 #include前置處理器指令
13.3 #define前置處理器命令:符號常數(Symbolic Constants)
13.4 #define前置處理器命令:巨集(Macros)
13.5 條件式編譯
13.6 #error和#pragma前置處理器命令
13.7 ##和##運算子
13.8 行號
13.9 事先定義的符號常數
13.10 斷言
14 C語言的其它主題
14.1 簡介
14.2 重導UNIX和Windows系統上的輸入/輸出
14.3 不定長度的引數列
14.4 使用命令列引數
14.5 編譯多個原始檔程式的注意事項
14.6 以exit和atexit結束程式的執行
14.7 volatile型別修飾字
14.8 整數常數和浮點常數的接尾詞
14.9 再論檔案
14.10 訊號處理
14.11 動態記憶體配置(Dynamic Memory Allocation):calloc和realloc函式
15 利用Allegro C函式庫進行遊戲程式設計
15.1 簡介
15.2 安裝Allegro
15.3 簡單的Allegro程式
15.4 簡單的圖形處理: 匯入點陣圖與Blit
15.5 使用雙重緩衝繪製動畫
15.6 匯入並播放音訊
15.7 鍵盤輸入
15.8 字型與顯示文字
15.9 實作乒乓遊戲
15.10 Allegro的計時器
15.11 捕捉器與Allegro資料檔案
15.12 其他的Allegro功能
15.13 Allegro網際網路與網頁資源
16 排序:更深入的探討
16.1 簡介
16.2 Big O 表示法
16.3 選擇排序法
16.4 插入排序法
16.5 合併排序法
17 C99的簡介
17.1 簡介
17.2 C99的支援
17.3 新的C99標頭檔
17.4 // 註解
17.5 宣告與可執行程式碼的混雜
17.6 在for敘述標頭中宣告變數
17.7 具名的初始器以及複合文數字
17.8 bool型態
17.9 在函式宣告中隱含的int
17.10 複數
17.11 可變長度的陣列
17.12 其他的C99特色
17.13 網際網路與網路資源
18 C++ 較好的C;簡介物件技術
18.1 簡介
18.2 C++程式語言
18.3 一個簡單的程式:兩個整數的相加
18.4 C++標準函式庫
18.5 標頭檔
18.6 行內函式
18.7 參考以及參考參數
18.8 空的參數串列
18.9 預設引數
18.10 一元範圍解析運算子
18.11 函式的多載
18.12 函式樣板
18.13 簡介物件技術與UML
18.14 總結
19 類別與物件簡介
19.1 簡介
19.2 類別、物件、成員函式與資料成員
19.3 本章範例概覽
19.4 定義一個含有成員函式的類別
19.5 定義一個具有參數的成員函式
19.6 資料成員、set函式與get函式
19.7 以建構子將物件初始化
19.8 將類別放在獨立檔案以提高重複使用性
19.9 將介面與實作分開
19.10 以set函式驗證資料
19.11 總結
20 類別: 深入討論(上)
20.1 簡介
20.2 案例研究:類別Time
20.3 類別使用域及存取類別的成員
20.4 介面與實作的分離
20.5 存取函式及工具函式
20.6 類別Time案例研究: 建構子與預設引數
20.7 解構子
20.8 建構子與解構子的呼叫時機
20.9 類別Time案例研究:小心陷阱;傳回private資料成員的參考
20.10 預設逐成員賦值
20.11 軟體再利用性
20.12 總結
21 類別: 深入討論(下)
21.1 簡介
21.2 const物件和const成員函式
21.3 組合: 將物件當作類別成員
21.4 夥伴函式與類別
21.5 使用this指標
21.6 動態記憶體配置(使用new 和delete 運算子)
21.7 static類別成員
21.8 資料抽象化與資訊隱藏
21.8.1 範例:陣列抽象資料型別
21.8.2 範例:字串抽象資料型別
21.8.3 範例:佇列抽象資料型別
21.9 容器類別與循環器
21.10 代理類別
21.11 總結
22 運算子多載
22.1 簡介
22.2 運算子多載的基本原理
22.3 運算子多載的限制
22.4 運算子函式作為類別成員與作為全域函式的對照
22.5 對串流插入和串流擷取運算子的多載
22.6 多載一元運算子
22.7 多載二元運算子
22.8 案例研究:Array類別
22.9 不同型別之間的轉換
22.10 使++和--多載
22.11 explicit建構子
22.12 總結
23 物件導向程式設計:繼承
23.1 簡介
23.2 基本類別與衍生類別
23.3 protected成員
23.4 基本類別和衍生類別之間的關係
23.4.1 建立並使用CommissionEmployee類別
23.4.2 不使用繼承機制建立BasePlusCommissionEmployee類別
23.4.3 建立CommissionEmployee-BasePlusCommissionEmployee繼承階層
23.4.4 使用protected資料的CommissionEmployee- BasePlusCommissionEmployee 繼承階層
23.4.5 使用private資料的CommissionEmployee- BasePlusCommissionEmployee 繼承階層
23.5 衍生類別的建構子與解構子
23.6 public、protected和private的繼承
23.7 使用繼承的軟體工程
23.8 總結
24 物件導向程式設計: 多型
24.1 簡介
24.2 多型的範例
24.3 繼承階層中的物件關係
24.3.1 從衍生類別物件呼叫基本類別的函式
24.3.2 以衍生類別的指標指向基本類別的物件
24.3.3 透過基本類別指標來呼叫衍生類別的成員函式
24.3.4 virtual函式
24.3.5 基本類別與衍生類別物件和指標間合法的賦值整理
24.4 Type欄位與switch敘述
24.5 抽象類別和純粹virtual函式
24.6 案例研究: 利用多型建立的薪資系統
24.6.1 產生抽象基本類別Employee
24.6.2 產生具象衍生類別SalariedEmployee
24.6.3 產生具象衍生類別HourlyEmployee
24.6.4 產生具象衍生類別CommissionEmployee
24.6.5 產生間接具象衍生類別BasePlusCommissionEmployee
24.6.6 多型處理的範例
24.7 (選讀) 剖析多型,virtual函式和動態連結
24.8 案例研究: 使用多型、向下轉型及執行時期型別資訊完成的薪資系統:dynamic_cast、typeid 和 type_info
24.9 虛擬解構子
24.10 總結
25 樣板
25.1 簡介
25.2 函式樣板
25.3 將函式樣板多載
25.4 類別樣板
25.5 類別樣板的非型別參數和預設型別
25.6 樣板與繼承注意事項
25.7 樣板與夥伴注意事項
25.8 樣板與static成員注意事項
25.9 總結
26 串流輸入/輸出
26.1 簡介
26.2 串流
26.2.1 典型串流與標準串流
26.2.2 iostream函式庫標頭檔
26.2.3 串流輸入/輸出類別和物件
26.3 串流輸出
26.3.1 輸出char *變數
26.3.2 使用成員函式put輸出字元
26.4 串流輸入
26.4.1 get與getline成員函式
26.4.2 istream的成員函式peek、putback和ignore
26.4.3 型別安全性I/O
26.5 使用read、write和gcount的非格式化I/O
26.6 串流操作子簡介
26.6.1 整數串流進位法: dec、oct、hex和setbase
26.6.2 浮點數的精準度 (precision和setprecision)
26.6.3 欄位寬度 (width和setw)
26.6.4 使用者自訂輸出串流操作子
26.7 串流格式狀態和串流操作子
26.7.1 補零和小數點 (showpoint)
26.7.2 對齊方式 (left、right和internal)
26.7.3 填補 (fill、setfill)
26.7.4 整數串流進位法 (dec、oct、hex、showbase)
26.7.5 浮點數,科學記號法和定點表示法 (scientific、fixed)
26.7.6 大寫/小寫控制 (uppercase)
26.7.6 指定Boolean格式 (boolalpha)
26.7.7 透過成員函式flags來設定和重設格式狀態
26.8 串流的錯誤狀態
26.9 將輸出串流與輸入串流連接
26.10 總結
27 例外處理
27.1 簡介
27.2 例外處理概述
27.3 範例:處理除零動作
27.4 何時使用例外處理
27.5 重新拋出例外
27.6 例外規格
27.7 處理非預期的例外
27.8 堆疊展開
27.9 建構子,解構子和例外處理
27.10 例外和繼承
27.11 處理 new 的錯誤
27.12 auto_ptr類別和動態記憶體配置
27.13 標準函式庫的例外階層
27.14 其他的錯誤處理技術
27.15 總結
A 網際網路與網頁資源
A.1 免費的C/C++編譯器與開發工具
A.2 C的資源網站
A.3 C99
A.4 C專案、免費軟體、共享軟體
A.5 C原始碼
A.6 C的文章與白皮書
A.7 C教學文件與與網路廣播
A.8 GNOME與GLib
A.9 SWIG
A.10 Objective-C
A.11 C的範例章節與電子書
A.12 C的Wiki
A.13 C的FAQ
A.14 C的新聞群組
A.15 C部落格
A.16 Download.com的C下載
A.17 C遊戲程式設計
A.18 Allegro遊戲程式設計資源
A.19 C程式設計者的求職機會
A.20 Deitel C訓練課程
B 運算子優先次序表
C ASCII字元集合
D 數字系統
D.1 簡介
D.2 二進位數轉為八進位及十六進位
D.3 八進位與十六進位轉為二進位
D.4 二進位、八進位或十六進位轉為十進位
D.5 十進位轉為二進位、八進位或十六進位
D.6 二進位負數:二補數法
E 遊戲程式設計:數獨解題
E.1 簡介
E.2 Deitel數獨資源中心
E.3 解題策略
E.4 設計數獨謎題解題器
E.5 產生新的數獨謎題
E.6 結論