|
目錄
歷史
前言
I. C語言入門
1. 程序的基本概念
1. 程序和編程語言
2. 自然語言和形式語言
3. 程序的調(diào)試
4. 第一個程序
2. 常量、變量和表達(dá)式
1. 繼續(xù)Hello World
2. 常量
3. 變量
4. 賦值
5. 表達(dá)式
6. 字符類型與字符編碼
3. 簡單函數(shù)
1. 數(shù)學(xué)函數(shù)
2. 自定義函數(shù)
3. 形參和實(shí)參
4. 全局變量、局部變量和作用域
4. 分支語句
1. if語句
2. if/else語句
3. 布爾代數(shù)
4. switch語句
5. 深入理解函數(shù)
1. return語句
2. 增量式開發(fā)
3. 遞歸
6. 循環(huán)語句
1. while語句
2. do/while語句
3. for語句
4. break和continue語句
5. 嵌套循環(huán)
6. goto語句和標(biāo)號
7. 結(jié)構(gòu)體
1. 復(fù)合類型與結(jié)構(gòu)體
2. 數(shù)據(jù)抽象
3. 數(shù)據(jù)類型標(biāo)志
4. 嵌套結(jié)構(gòu)體
8. 數(shù)組
1. 數(shù)組的基本概念
2. 數(shù)組應(yīng)用實(shí)例:統(tǒng)計(jì)隨機(jī)數(shù)
3. 數(shù)組應(yīng)用實(shí)例:直方圖
4. 字符串
5. 多維數(shù)組
9. 編碼風(fēng)格
1. 縮進(jìn)和空白
2. 注釋
3. 標(biāo)識符命名
4. 函數(shù)
5. indent工具
10. gdb
1. 單步執(zhí)行和跟蹤函數(shù)調(diào)用
2. 斷點(diǎn)
3. 觀察點(diǎn)
4. 段錯誤
11. 排序與查找
1. 算法的概念
2. 插入排序
3. 算法的時間復(fù)雜度分析
4. 歸并排序
5. 線性查找
6. 折半查找
12. 棧與隊(duì)列
1. 數(shù)據(jù)結(jié)構(gòu)的概念
2. 堆棧
3. 深度優(yōu)先搜索
4. 隊(duì)列與廣度優(yōu)先搜索
5. 環(huán)形隊(duì)列
13. 本階段總結(jié)
II. C語言本質(zhì)
14. 計(jì)算機(jī)中數(shù)的表示
1. 為什么計(jì)算機(jī)用二進(jìn)制計(jì)數(shù)
2. 不同進(jìn)制之間的換算
3. 整數(shù)的加減運(yùn)算
3.1. Sign and Magnitude表示法
3.2. 1's Complement表示法
3.3. 2's Complement表示法
3.4. 有符號數(shù)和無符號數(shù)
4. 浮點(diǎn)數(shù)
15. 數(shù)據(jù)類型詳解
1. 整型
2. 浮點(diǎn)型
3. 類型轉(zhuǎn)換
3.1. Integer Promotion
3.2. Usual Arithmetic Conversion
3.3. 由賦值產(chǎn)生的類型轉(zhuǎn)換
3.4. 強(qiáng)制類型轉(zhuǎn)換
3.5. 編譯器如何處理類型轉(zhuǎn)換
16. 運(yùn)算符詳解
1. 位運(yùn)算
1.1. 按位與、或、異或、取反運(yùn)算
1.2. 移位運(yùn)算
1.3. 掩碼
1.4. 異或運(yùn)算的一些特性
2. 其它運(yùn)算符
2.1. 復(fù)合賦值運(yùn)算符
2.2. 條件運(yùn)算符
2.3. 逗號運(yùn)算符
2.4. sizeof運(yùn)算符與typedef類型聲明
3. Side Effect與Sequence Point
4. 運(yùn)算符總結(jié)
17. 計(jì)算機(jī)體系結(jié)構(gòu)基礎(chǔ)
1. 內(nèi)存與地址
2. CPU
3. 設(shè)備
4. MMU
5. Memory Hierarchy
18. x86匯編程序基礎(chǔ)
1. 最簡單的匯編程序
2. x86的寄存器
3. 第二個匯編程序
4. 尋址方式
5. ELF文件
5.1. 目標(biāo)文件
5.2. 可執(zhí)行文件
19. 匯編與C之間的關(guān)系
1. 函數(shù)調(diào)用
2. main函數(shù)和啟動例程
3. 變量的存儲布局
4. 結(jié)構(gòu)體和聯(lián)合體
5. C內(nèi)聯(lián)匯編
6. volatile限定符
20. 鏈接詳解
1. 多目標(biāo)文件的鏈接
2. 定義和聲明
2.1. extern和static關(guān)鍵字
2.2. 頭文件
2.3. 定義和聲明的詳細(xì)規(guī)則
3. 靜態(tài)庫
4. 共享庫
4.1. 編譯、鏈接、運(yùn)行
4.2. 動態(tài)鏈接的過程
4.3. 共享庫的命名慣例
5. 虛擬內(nèi)存管理
21. 預(yù)處理
1. 預(yù)處理的步驟
2. 宏定義
2.1. 函數(shù)式宏定義
2.2. 內(nèi)聯(lián)函數(shù)
2.3. #、##運(yùn)算符和可變參數(shù)
2.4. 宏展開的步驟
3. 條件預(yù)處理指示
4. 其它預(yù)處理特性
22. Makefile基礎(chǔ)
1. 基本規(guī)則
2. 隱含規(guī)則和模式規(guī)則
3. 變量
4. 自動處理頭文件的依賴關(guān)系
5. 常用的make命令行選項(xiàng)
23. 指針
1. 指針的基本概念
2. 指針類型的參數(shù)和返回值
3. 指針與數(shù)組
4. 指針與const限定符
5. 指針與結(jié)構(gòu)體
6. 指向指針的指針與指針數(shù)組
7. 指向數(shù)組的指針與多維數(shù)組
8. 函數(shù)類型和函數(shù)指針類型
9. 不完全類型和復(fù)雜聲明
24. 函數(shù)接口
1. 本章的預(yù)備知識
1.1. strcpy與strncpy
1.2. malloc與free
2. 傳入?yún)?shù)與傳出參數(shù)
3. 兩層指針的參數(shù)
4. 返回值是指針的情況
5. 回調(diào)函數(shù)
6. 可變參數(shù)
25. C標(biāo)準(zhǔn)庫
1. 字符串操作函數(shù)
1.1. 初始化字符串
1.2. 取字符串的長度
1.3. 拷貝字符串
1.4. 連接字符串
1.5. 比較字符串
1.6. 搜索字符串
1.7. 分割字符串
2. 標(biāo)準(zhǔn)I/O庫函數(shù)
2.1. 文件的基本概念
2.2. fopen/fclose
2.3. stdin/stdout/stderr
2.4. errno與perror函數(shù)
2.5. 以字節(jié)為單位的I/O函數(shù)
2.6. 操作讀寫位置的函數(shù)
2.7. 以字符串為單位的I/O函數(shù)
2.8. 以記錄為單位的I/O函數(shù)
2.9. 格式化I/O函數(shù)
2.10. C標(biāo)準(zhǔn)庫的I/O緩沖區(qū)
2.11. 本節(jié)綜合練習(xí)
3. 數(shù)值字符串轉(zhuǎn)換函數(shù)
4. 分配內(nèi)存的函數(shù)
26. 鏈表、二叉樹和哈希表
1. 鏈表
1.1. 單鏈表
1.2. 雙向鏈表
1.3. 靜態(tài)鏈表
1.4. 本節(jié)綜合練習(xí)
2. 二叉樹
2.1. 二叉樹的基本概念
2.2. 排序二叉樹
3. 哈希表
27. 本階段總結(jié)
III. Linux系統(tǒng)編程
28. 文件與I/O
1. 匯編程序的Hello world
2. C標(biāo)準(zhǔn)I/O庫函數(shù)與Unbuffered I/O函數(shù)
3. open/close
4. read/write
5. lseek
6. fcntl
7. ioctl
8. mmap
29. 文件系統(tǒng)
1. 引言
2. ext2文件系統(tǒng)
2.1. 總體存儲布局
2.2. 實(shí)例剖析
2.3. 數(shù)據(jù)塊尋址
2.4. 文件和目錄操作的系統(tǒng)函數(shù)
3. VFS
3.1. 內(nèi)核數(shù)據(jù)結(jié)構(gòu)
3.2. dup和dup2函數(shù)
30. 進(jìn)程
1. 引言
2. 環(huán)境變量
3. 進(jìn)程控制
3.1. fork函數(shù)
3.2. exec函數(shù)
3.3. wait和waitpid函數(shù)
4. 進(jìn)程間通信
4.1. 管道
4.2. 其它IPC機(jī)制
5. 練習(xí):實(shí)現(xiàn)簡單的Shell
31. Shell腳本
1. Shell的歷史
2. Shell如何執(zhí)行命令
2.1. 執(zhí)行交互式命令
2.2. 執(zhí)行腳本
3. Shell的基本語法
3.1. 變量
3.2. 文件名代換(Globbing):* ? []
3.3. 命令代換:`或 $()
3.4. 算術(shù)代換:$(())
3.5. 轉(zhuǎn)義字符\
3.6. 單引號
3.7. 雙引號
4. bash啟動腳本
4.1. 作為交互登錄Shell啟動,或者使用--login參數(shù)啟動
4.2. 以交互非登錄Shell啟動
4.3. 非交互啟動
4.4. 以sh命令啟動
5. Shell腳本語法
5.1. 條件測試:test [
5.2. if/then/elif/else/fi
5.3. case/esac
5.4. for/do/done
5.5. while/do/done
5.6. 位置參數(shù)和特殊變量
5.7. 函數(shù)
6. Shell腳本的調(diào)試方法
32. 正則表達(dá)式
1. 引言
2. 基本語法
3. sed
4. awk
5. 練習(xí):在C語言中使用正則表達(dá)式
33. 信號
1. 信號的基本概念
2. 產(chǎn)生信號
2.1. 通過終端按鍵產(chǎn)生信號
2.2. 調(diào)用系統(tǒng)函數(shù)向進(jìn)程發(fā)信號
2.3. 由軟件條件產(chǎn)生信號
3. 阻塞信號
3.1. 信號在內(nèi)核中的表示
3.2. 信號集操作函數(shù)
3.3. sigprocmask
3.4. sigpending
4. 捕捉信號
4.1. 內(nèi)核如何實(shí)現(xiàn)信號的捕捉
4.2. sigaction
4.3. pause
4.4. 可重入函數(shù)
4.5. sig_atomic_t類型與volatile限定符
4.6. 競態(tài)條件與sigsuspend函數(shù)
4.7. 關(guān)于SIGCHLD信號
34. 終端、作業(yè)控制與守護(hù)進(jìn)程
1. 終端
1.1. 終端的基本概念
1.2. 終端登錄過程
1.3. 網(wǎng)絡(luò)登錄過程
2. 作業(yè)控制
2.1. Session與進(jìn)程組
2.2. 與作業(yè)控制有關(guān)的信號
3. 守護(hù)進(jìn)程
35. 線程
1. 線程的概念
2. 線程控制
2.1. 創(chuàng)建線程
2.2. 終止線程
3. 線程間同步
3.1. mutex
3.2. Condition Variable
3.3. Semaphore
3.4. 其它線程間同步機(jī)制
4. 編程練習(xí)
36. TCP/IP協(xié)議基礎(chǔ)
1. TCP/IP協(xié)議棧與數(shù)據(jù)包封裝
2. 以太網(wǎng)(RFC 894)幀格式
3. ARP數(shù)據(jù)報(bào)格式
4. IP數(shù)據(jù)報(bào)格式
5. IP地址與路由
6. UDP段格式
7. TCP協(xié)議
7.1. 段格式
7.2. 通訊時序
7.3. 流量控制
37. socket編程
1. 預(yù)備知識
1.1. 網(wǎng)絡(luò)字節(jié)序
1.2. socket地址的數(shù)據(jù)類型及相關(guān)函數(shù)
2. 基于TCP協(xié)議的網(wǎng)絡(luò)程序
2.1. 最簡單的TCP網(wǎng)絡(luò)程序
2.2. 錯誤處理與讀寫控制
2.3. 把client改為交互式輸入
2.4. 使用fork并發(fā)處理多個client的請求
2.5. setsockopt
2.6. 使用select
3. 基于UDP協(xié)議的網(wǎng)絡(luò)程序
4. UNIX Domain Socket IPC
5. 練習(xí):實(shí)現(xiàn)簡單的Web服務(wù)器
5.1. 基本HTTP協(xié)議
5.2. 執(zhí)行CGI程序
A. 字符編碼
1. ASCII碼
2. Unicode和UTF-8
3. 在Linux C編程中使用Unicode和UTF-8
B. GNU Free Documentation License Version 1.3, 3 November 2008
參考書目
索引轉(zhuǎn)自:http://www.51embeded.com/forum.p ... F%E5%AD%A6%E4%B9%A0
下載地址:
http://url.cn/LwbgWV
|
|