前言
第一篇 準備篇
第1章 C語言概述 2
1.1 C語言的起源與發(fā)展 2
1.2 C語言特性 3
1.3 開發(fā)環(huán)境搭建 4
1.3.1 Windows開發(fā)環(huán)境 4
1.3.2 UNIX/Linux開發(fā)環(huán)境 13
1.3.3 隨書網盤的開發(fā)環(huán)境 33
1.4 hello,world 38
1.5 小結 43
第2章 C語言快速入門 44
2.1 C語言的語法特點 44
2.2 猜數(shù)字游戲 45
2.2.1 編寫輸入數(shù)字的C代碼 46
2.2.2 限制輸入數(shù)字的范圍 46
2.2.3 引入循環(huán)機制,允許重新輸入 48
2.2.4 產生1~500以內的隨機整數(shù) 50
2.2.5 反復接收玩家輸入,直到猜中數(shù)字為止 52
2.2.6 自動猜數(shù)算法 54
2.3 小結 57
第3章 AT&T匯編概述 58
3.1 AT&T匯編基礎 58
3.1.1 IA-32指令 58
3.1.2 匯編的作用 59
3.1.3 AT&T匯編語言的特點 59
3.1.4 第一個AT&T匯編 61
3.2 程序運行機制 64
3.3 小結 65
第二篇 基礎篇
第4章 指針基礎 68
4.1 C指針概述 68
4.2 C指針基礎 69
4.2.1 指向標量的C指針 69
4.2.2 指向數(shù)組的C指針 73
4.2.3 指針數(shù)組 75
4.2.4 函數(shù)參數(shù)中使用指針 82
4.2.5 常量指針 85
4.2.6 函數(shù)指針 88
4.2.7 文件指針 91
4.3 小結 98
第5章 C開發(fā)基礎 99
5.1 編譯與調試C程序 99
5.1.1 GCC與GDB 99
5.1.2 make工具與makefile 104
5.2 GLib函數(shù)庫 107
5.2.1 GLib簡述 107
5.2.2 GLib基礎 110
5.2.3 GLib數(shù)據(jù)類型及標準宏 118
5.3 內存管理 120
5.3.1 glibc的內存管理 120
5.3.2 內存分配機制 121
5.3.3 內存回收 125
5.4 Ncurses庫 137
5.4.1 Ncurses簡述 137
5.4.2 Ncurses基礎 137
5.4.3 Ncurses實例:文字編輯器 154
5.5 小結 181
第三篇 進階篇
第6章 C開發(fā)技巧集錦 184
6.1 遞歸 184
6.1.1 遞歸概述 184
6.1.2 斐波那契數(shù)列 184
6.1.3 brainfuck解釋器 186
6.2 字符串操作 196
6.2.1 復制并截斷字符串 196
6.2.2 字符串拼接 197
6.2.3 在內存中復制字符串 197
6.2.4 目錄的尾部位置 197
6.2.5 查找文件擴展名 198
6.3 加法溢出 198
6.3.1 溢出原理 198
6.3.2 溢出應用 199
6.4 編譯信息的預定義宏 200
6.4.1 __FILE__與__LINE__ 201
6.4.2 #line與#error 201
6.5 C與匯編語言混合編程 202
6.5.1 寄存器 203
6.5.2 變量存儲分配 204
6.5.3 匯編指令概述 205
6.5.4 C編譯執(zhí)行原理 207
6.5.5 匯編調用C庫函數(shù) 209
6.5.6 C內聯(lián)匯編 210
6.6 小結 216
第7章 C并行與網絡基礎 217
7.1 多進程、多線程基礎 217
7.1.1 多進程編程 218
7.1.2 多線程委托模型 220
7.1.3 分離線程 222
7.1.4 取消線程 224
7.1.5 多線程競爭域 230
7.1.6 線程互斥對象 232
7.1.7 線程專有數(shù)據(jù) 239
7.1.8 消息隊列 241
7.2 C網絡基礎 245
7.2.1 TCP基礎 245
7.2.2 TCP編程基礎 245
7.2.3 TCP編程示例 248
7.3 小結 254