本書較為全面地介紹了嵌入式開發(fā)中C語言編程的基礎(chǔ)知識。全書共11章, 內(nèi)容包括嵌入式LinuxC語言開發(fā)工具、數(shù)據(jù)、數(shù)據(jù)的輸入輸出、運算符和表達式、程序結(jié)構(gòu)和控制語句、數(shù)組、指針、函數(shù)、用戶自定義數(shù)據(jù)類型、嵌入式C語言的高級用法、嵌入式Linux內(nèi)核常見數(shù)據(jù)結(jié)構(gòu)。每章都提供詳細的練習(xí)題和視頻講解, 通過練習(xí)、操作實踐及相關(guān)視頻, 幫助讀者鞏固所學(xué)的內(nèi)容。
國內(nèi)領(lǐng)先的嵌入式培訓(xùn)機構(gòu)華清遠見出品,作者具有多年從業(yè)經(jīng)驗,真正從企業(yè)用人需求出發(fā),培養(yǎng)和提升讀者能力;
歷經(jīng)市場考驗,第三次修訂改版;
書中配有大量微課,詳細講解重點難點
劉洪濤,北京華清遠見科技信息有限公司技術(shù)總監(jiān),ARM公司全球認證講師。參與編寫過幾十本專業(yè)圖書;國內(nèi)知名物聯(lián)網(wǎng)方向技術(shù)顧問;首批高校物聯(lián)網(wǎng)專業(yè)建設(shè)教學(xué)指導(dǎo)委員會專家委員會成員;豐富的嵌入式及物聯(lián)網(wǎng)系統(tǒng)軟、硬件產(chǎn)品開發(fā)經(jīng)驗;主持開發(fā)過多個大型嵌入式及物聯(lián)網(wǎng)項目,涉及工業(yè)控制、網(wǎng)絡(luò)、通訊、消費電子等眾多領(lǐng)域。
第1章 嵌入式Linux C語言開發(fā)工具 1
1.1 嵌入式Linux下C語言概述 2
1.1.1 C語言簡史 2
1.1.2 C語言特點 2
1.1.3 嵌入式Linux C語言編程環(huán)境 3
1.2 嵌入式Linux編輯器vi的使用 3
1.2.1 vi的基本模式 4
1.2.2 vi的基本操作 4
1.2.3 vi的使用實例分析 8
1.3 嵌入式Linux編譯器GCC的使用 9
1.3.1 GCC概述 9
1.3.2 GCC編譯流程分析 10
1.3.3 GCC警告提示 12
1.3.4 GCC使用庫函數(shù) 14
1.3.5 GCC代碼優(yōu)化 15
1.4 嵌入式Linux調(diào)試器GDB的使用 16
1.4.1 GDB使用實例 16
1.4.2 設(shè)置/刪除斷點 19
1.4.3 數(shù)據(jù)相關(guān)命令 20
1.4.4 調(diào)試運行環(huán)境相關(guān)命令 20
1.4.5 堆棧相關(guān)命令 21
1.5 make工程管理器 21
1.5.1 Makefile基本結(jié)構(gòu) 22
1.5.2 Makefile變量 23
1.5.3 Makefile規(guī)則 26
1.5.4 make使用 27
小結(jié) 28
思考與練習(xí) 28
第2章 數(shù)據(jù) 29
2.1 ANSI C與GNU C 30
2.1.1 ANSI C簡介 30
2.1.2 GNU C簡介 30
2.2 基本數(shù)據(jù)類型 31
2.2.1 整型家族 31
2.2.2 實型家族 33
2.2.3 字符型家族 35
2.2.4 枚舉家族 37
2.2.5 指針家族 38
2.3 變量與常量 39
2.3.1 變量的定義 39
2.3.2 typedef 40
2.3.3 常量的定義 41
2.3.4 作用域 41
2.3.5 存儲模型 44
2.4 預(yù)處理 47
2.4.1 預(yù)定義 47
2.4.2 文件包含 53
2.4.3 條件編譯 53
2.5 需要注意的問題 55
2.5.1 字長和數(shù)據(jù)類型 55
2.5.2 數(shù)據(jù)對齊 56
2.5.3 字節(jié)序 56
小結(jié) 57
思考與練習(xí) 57
第3章 數(shù)據(jù)的輸入輸出 58
3.1 數(shù)據(jù)的輸出 59
3.1.1 字符輸出函數(shù)putchar 59
3.1.2 格式化輸出函數(shù)printf 59
3.2 數(shù)據(jù)的輸入 62
3.2.1 字符輸入函數(shù)getchar 62
3.2.2 格式化輸入函數(shù)scanf 63
3.3 數(shù)據(jù)輸入輸出綜合示例 68
3.4 字符串輸入輸出函數(shù) 70
小結(jié) 71
思考與練習(xí) 72
第4章 運算符和表達式 73
4.1 概述 74
4.2 運算符和表達式 74
4.2.1 算術(shù)運算符和表達式 74
4.2.2 賦值運算符和表達式 77
4.2.3 逗號運算符和表達式 80
4.2.4 位運算符和表達式 81
4.2.5 關(guān)系運算符和表達式 84
4.2.6 邏輯運算符和表達式 86
4.2.7 sizeof操作符 89
4.2.8 條件運算符 90
4.2.9 運算符優(yōu)先級總結(jié) 91
小結(jié) 93
思考與練習(xí) 93
第5章 程序結(jié)構(gòu)和控制語句 94
5.1 C語言程序結(jié)構(gòu) 95
5.2 C語言控制語句 95
5.2.1 條件判斷語句 95
5.2.2 循環(huán)語句 105
5.2.3 轉(zhuǎn)向語句 109
小結(jié) 112
思考與練習(xí) 112
第6章 數(shù)組 114
6.1 一維數(shù)組 115
6.1.1 數(shù)組的定義 115
6.1.2 一維數(shù)組的引用 115
6.1.3 一維數(shù)組的初始化 117
6.1.4 一維數(shù)組的內(nèi)存分配 118
6.1.5 一維數(shù)組程序舉例 119
6.2 多維數(shù)組 121
6.2.1 多維數(shù)組定義及初始化 121
6.2.2 二維數(shù)組的內(nèi)存分配 122
6.2.3 深入理解二維數(shù)組 123
6.2.4 二維數(shù)組程序舉例 124
6.3 字符數(shù)組 126
6.4 字符串 127
6.4.1 字符串的定義 127
6.4.2 字符串的輸入輸出 127
6.4.3 字符串處理函數(shù) 129
小結(jié) 133
思考與練習(xí) 133
第7章 指針 134
7.1 指針基礎(chǔ) 135
7.1.1 指針變量的定義 135
7.1.2 指針變量的賦值 135
7.1.3 指針變量的引用 136
7.2 指針的運算 139
7.2.1 指針的算術(shù)運算 140
7.2.2 指針的關(guān)系運算 141
7.2.3 空指針 144
7.3 指針與數(shù)組 145
7.3.1 指針與一維數(shù)組 145
7.3.2 指針與多維數(shù)組 147
7.4 多級指針 150
7.4.1 多級指針的定義及引用 150
7.4.2 多級指針的運算 152
7.5 指針數(shù)組 152
7.5.1 指針數(shù)組的定義及初始化 152
7.5.2 理解指針數(shù)組名 153
7.6 const與指針 155
7.7 void指針 157
7.8 字符指針 158
7.8.1 字符串 158
7.8.2 字符指針數(shù)組 159
小結(jié) 160
思考與練習(xí) 161
第8章 函數(shù) 162
8.1 函數(shù)基礎(chǔ) 163
8.1.1 函數(shù)定義和聲明 163
8.1.2 函數(shù)的調(diào)用、參數(shù)傳遞和返回值 164
8.1.3 函數(shù)和數(shù)組 171
8.1.4 main函數(shù)的參數(shù) 173
8.2 指針函數(shù) 174
8.2.1 指針函數(shù)的定義和使用 174
8.2.2 指針函數(shù)程序舉例 177
8.3 函數(shù)指針 179
8.3.1 函數(shù)指針的聲明 179
8.3.2 定義函數(shù)指針類型 180
8.3.3 函數(shù)指針數(shù)組 181
8.3.4 函數(shù)指針程序舉例 182
8.4 遞歸函數(shù) 184
8.4.1 遞歸函數(shù)的定義 184
8.4.2 函數(shù)調(diào)用機制說明 185
8.4.3 遞歸調(diào)用的形式 185
8.4.4 遞歸的條件 186
8.5 回調(diào)函數(shù) 187
8.5.1 回調(diào)函數(shù)的定義 187
8.5.2 回調(diào)函數(shù)實現(xiàn)機制 188
8.5.3 自定義回調(diào)函數(shù) 188
8.5.4 嵌入式開發(fā)中常見的回調(diào)函數(shù) 189
8.6 attribute機制介紹 189
小結(jié) 195
思考與練習(xí) 195
第9章 用戶自定義數(shù)據(jù)類型 196
9.1 結(jié)構(gòu)體 197
9.1.1 結(jié)構(gòu)體的定義 197
9.1.2 結(jié)構(gòu)體變量的聲明、使用及初始化 199
9.1.3 結(jié)構(gòu)體數(shù)組 206
9.1.4 結(jié)構(gòu)體指針 210
9.2 位域 211
9.2.1 位域的定義 211
9.2.2 位域變量的說明 213
9.2.3 位域的使用 214
9.3 共用體 215
9.4 枚舉 217
9.4.1 枚舉類型的定義 218
9.4.2 枚舉變量的聲明和使用 219
小結(jié) 221
思考與練習(xí) 221
第10章 嵌入式C語言的
高級用法 223
10.1 內(nèi)存管理 224
10.2 動態(tài)內(nèi)存的申請和釋放 225
10.2.1 malloc函數(shù) 225
10.2.2 free函數(shù) 226
10.2.3 關(guān)于野指針 228
10.3 堆和棧的區(qū)別 230
10.4 動態(tài)內(nèi)存程序舉例 231
10.5 C語言和匯編語言的接口 233
10.5.1 內(nèi)聯(lián)匯編的語法 233
10.5.2 編譯器優(yōu)化介紹 236
10.5.3 C語言關(guān)鍵字volatile 236
10.5.4 “memory”描述符 236
小結(jié) 236
思考與練習(xí) 236
第11章 嵌入式Linux內(nèi)核常見數(shù)據(jù)結(jié)構(gòu) 239
11.1 鏈表 240
11.1.1 單向鏈表 240
11.1.2 雙向鏈表 243
11.1.3 循環(huán)鏈表 245
11.1.4 ARM Linux中鏈表使用實例 245
11.2 樹、二叉樹、平衡樹 247
11.2.1 樹的定義 247
11.2.2 二叉樹 248
11.2.3 平衡樹 254
11.2.4 ARM Linux中紅黑樹使用實例 255
11.3 哈希表 258
11.3.1 哈希表的概念及作用 258
11.3.2 哈希表的構(gòu)造方法 259
11.3.3 哈希表的處理沖突方法 260
11.3.4 ARM Linux中哈希表
使用實例 262
小結(jié) 263
思考與練習(xí) 263
收起全部↑