目錄
前言1
第1章 C語言基礎7
1.1 優(yōu)勢和劣勢7
1.2 入門8
1.2.1 所需工具8
1.2.2 創(chuàng)建 C 語言“Hello, World”17
1.2.3 編譯代碼20
1.2.4 運行代碼20
1.3 下一步22
第2章 存儲和狀態(tài)23
2.1 C語言中的語句23
2.1.1 分隔符24
2.1.2 語句流24
2.2 變量和類型25
2.2.1 獲取用戶輸入25
2.2.2 字符串和字符28
2.2.3 數(shù)字30
2.2.4 變量名稱32
2.2.5 變量賦值33
2.3 printf()和scanf()34
2.3.1 printf() 格式35
2.3.2 格式化輸出36
2.3.3 scanf()和輸入解析38
2.4 運算符和表達式39
2.4.1 算術運算符40
2.4.2 執(zhí)行順序41
2.4.3 類型轉換42
2.5 下一步44
第3章 控制流45
3.1 布爾值45
3.1.1 比較運算符46
3.1.2 邏輯運算符47
3.2 分支49
3.2.1 if 語句49
3.2.2 switch 語句56
3.3 三元運算符和條件賦值60
3.4 循環(huán)語句62
3.4.1 for 語句62
3.4.2 while 語句66
3.4.3 do/while 變式67
3.5 嵌套68
3.5.1 嵌套循環(huán)和表格70
3.5.2 變量作用域71
3.6 練習73
3.7 下一步75
第4章 位和(許多)字節(jié)76
4.1 用數(shù)組存儲多個元素76
4.1.1 創(chuàng)建和操作數(shù)組76
4.1.2 回顧字符串82
4.1.3 多維數(shù)組83
4.1.4 訪問多維數(shù)組中的元素84
4.2 存儲位85
4.2.1 二進制、八進制、十六進制86
4.2.2 C 語言中的八進制和十六進制字面量87
4.2.3 八進制和十六進制數(shù)值的輸入與輸出88
4.2.4 位運算符90
4.3 混合位和字節(jié)91
4.4 轉換答案95
4.5 下一步95
第5章 函數(shù)96
5.1 熟悉的函數(shù)96
5.2 函數(shù)流96
5.3 簡單函數(shù)97
5.4 向函數(shù)發(fā)送信息99
5.4.1 傳遞簡單類型100
5.4.2 將字符串傳遞給函數(shù)100
5.4.3 多種類型102
5.4.4 從函數(shù)退出102
5.5 返回信息103
5.5.1 使用返回值104
5.5.2 忽略返回值105
5.6 嵌套調用和遞歸105
5.7 變量作用域109
5.8 main() 函數(shù)113
5.8.1 返回值和 main()113
5.8.2 命令行參數(shù)和 main()114
5.9 下一步116
第6章 指針和引用117
6.1 C 語言中的地址117
6.1.1 NULL 值和指針錯誤119
6.1.2 數(shù)組120
6.1.3 局部變量和棧121
6.1.4 全局變量和堆123
6.2 指針算術123
6.3 數(shù)組指針125
6.4 函數(shù)和指針126
6.5 用數(shù)組管理內存127
6.5.1 使用 malloc() 分配內存127
6.5.2 使用free()釋放內存128
6.6 C結構體129
6.6.1 定義結構體129
6.6.2 分配和訪問結構體成員130
6.6.3 結構體指針131
6.6.4 函數(shù)和結構體132
6.7 指針語法回顧133
6.8 下一步135
第7章 庫137
7.1 C標準庫138
7.1.1 stdio.h138
7.1.2 stdlib.h138
7.1.3 string.h142
7.1.4 math.h144
7.1.5 time.h146
7.1.6 ctype.h147
7.2 組合起來148
7.2.1 填充字符串148
7.2.2 尋找我們的興趣所向149
7.3 尋找新的庫150
7.4 下一步151
第8章 在Arduino中的C語言152
8.1 Arduino IDE(Windows、macOS、Linux)152
8.1.1 在 Windows 上安裝153
8.1.2 在 macOS上安裝154
8.1.3 在Linux上安裝155
8.2 你的第一個 Arduino 項目155
8.2.1 選擇板子156
8.2.2 LED157
8.2.3 外部 LED 升級160
8.3 Arduino 庫162
8.3.1 管理庫162
8.3.2 使用 Arduino 庫163
8.4 Arduino 草圖和 C 164
8.4.1 C 對象和變量166
8.4.2 更多關于對象的實踐167
8.4.3 C 注意事項169
8.4.4 操作對象的作業(yè)170
8.5 下一步171
第9章 小型系統(tǒng)172
9.1 Arduino 環(huán)境172
9.1.1 特有命名值173
9.1.2 特殊類型174
9.1.3 “內置”函數(shù)175
9.1.4 試用 Arduino 的這些特性176
9.2 微控制器輸入/輸出179
9.2.1 傳感器和模擬輸入179
9.2.2 串行監(jiān)視器180
9.2.3 這里熱嗎181
9.2.4 分段式數(shù)碼管182
9.2.5 按鈕和數(shù)字輸入184
9.2.6 到底有多熱185
9.3 Arduino 的內存管理187
9.3.1 閃存(PROGMEM)188
9.3.2 SRAM190
9.3.3 EEPROM191
9.3.4 保存選擇192
9.4 中斷195
9.4.1 中斷服務例程196
9.4.2 中斷驅動編程196
9.5 練習198
9.6 下一步199
第10章 更快的代碼201
10.1 配置201
10.2 浮點數(shù)與整數(shù)計算203
10.2.1 浮點計算替代方案203
10.2.2 整數(shù)計算與無計算205
10.2.3 查找表206
10.2.4 更近一步206
10.3 2 的冪的冪208
10.4 循環(huán)優(yōu)化209
10.4.1 展開循環(huán),快樂且高效209
10.4.2 遞歸與迭代210
10.5 字符串與字符數(shù)組211
10.6 我們的最終方案212
10.7 下一步213
第11章 自定義庫214
11.1 創(chuàng)建自己的庫214
11.1.1 預處理器指令216
11.1.2 預處理器宏217
11.1.3 自定義類型定義218
11.1.4 我們的小車項目219
11.2 多文件項目222
11.2.1 代碼(.ino)文件222
11.2.2 頭文件225
11.3 導入自定義庫227
11.3.1 通信支持227
11.3.2 改裝我們的小車227
11.3.3 創(chuàng)建控制器229
11.3.4 創(chuàng)建庫229
11.3.5 更新小車項目235
11.3.6 控制它237
11.3.7 開車吧238
11.3.8 文檔和分發(fā)238
11.4 下一步240
第12章 更進一步241
12.1 中高級課題241
12.1.1 物聯(lián)網和 Arduino242
12.1.2 Arduino 源代碼246
12.2 其他微控制器246
12.3 C/C 的行業(yè)生態(tài)247
12.4 未來展望247
附錄A 硬件和軟件249
附錄B printf()格式指定符詳情253