你好,C語言
周聖傑、林耿亮
買這商品的人也買了...
-
$505Android 應用安全防護和逆向分析
-
$474$450 -
$294$279 -
$594$564 -
$454移動開發架構設計實戰
-
$301物聯網項目實戰 基於 Android Things 系統 (Android Things Projects)
-
$580$458 -
$352程序自動化交易 — 投資策略解析
-
$474$450 -
$305數學女王的邀請 初等數論入門
-
$709Android 編程權威指南, 4/e (Android Programming: The Big Nerd Ranch Guide, 4/e)
-
$690$538 -
$380$342 -
$350$315 -
$380$342 -
$350$315 -
$474$450 -
$600$420 -
$539$512 -
$449Midjourney 人工智能 AI 繪畫教程:從娛樂到商用
-
$505基於低代碼工具的工業APP開發及應用
-
$594$564 -
$356人人都是設計師:設計基礎+Midjourney+ChatGPT
-
$449ChatGPT AI文案寫作從入門到精通
-
$750$593
相關主題
商品描述
本書是一本全面介紹 C 語言的技術性書籍,旨在幫助讀者深入瞭解 C 語言的基礎知識和高級特性,以及它在實際項目中的應用。全書共 15 章,首先通過清晰易懂的語言,深入淺出地解釋了C 語言的語法和編程原理,其次重點介紹了 C 語言的指針操作、內存管理、文件處理和模塊化編程等關鍵概念。此外,本書還提供了主富的實例,幫助讀者加深對 C 語言的理解,並通過實踐鍛煉讀者解決實際問題的能力本書適合作為高等院校電腦科學及相關專業的教材和教學參考書,也可作為職業開發人員的自學用書和參考手冊。無論是初學者還是有一定編程基礎的開發人員,都可以從本書中獲得實用的 C 語言編程知識和技能,提升自己在軟件開發領域的能力。
目錄大綱
第1章 初識C語言 1
1.1 C語言的發明及發展 1
1.2 C語言現狀 3
1.3 C語言開發環境的搭建 5
1.3.1 下載Visual Studio 6
1.3.2 安裝Visual Studio 7
1.3.3 激活Visual Studio 9
第2章 C語言基礎知識 10
2.1 第一個C語言程序 10
2.1.1 創建項目和源文件 11
2.1.2 編寫並運行程序 14
2.1.3 新手常見錯誤 15
2.2 函數 16
2.2.1 主函數 16
2.2.2 函數的概念 17
2.2.3 自定義函數 18
2.2.4 調用函數 19
2.3 變量和常量 21
2.4 printf函數和include命令 23
2.4.1 printf函數 23
2.4.2 include命令 24
第3章 數據類型 25
3.1 整型數據類型 25
3.1.1 各種整型數據類型 25
3.1.2 sizeof測量大小 26
3.1.3 三位二進制的數值範圍 27
3.1.4 數值的補碼表示法 28
3.1.5 整型的數值範圍 29
3.1.6 無符號整型 30
3.2 浮點數據類型 30
3.2.1 float 31
3.2.2 double 31
3.2.3 浮點類型占用的空間大小 32
3.3 變量 32
3.3.1 變量命名規則 34
3.3.2 初始化和賦值 34
3.4 常量 36
3.4.1 字面常量 36
3.4.2 符號常量 37
3.5 字符 38
3.5.1 字符常量 38
3.5.2 ASCII碼 40
3.5.3 字符變量 41
3.5.4 字符串常量 42
3.5.5 轉義字符 43
第4章 格式化輸入和輸出 46
4.1 printf函數 46
4.1.1 類型提升 48
4.1.2 轉換規範 50
4.1.3 轉換操作 50
4.1.4 長度指示符 56
4.1.5 精度 58
4.1.6 最小字段寬度 59
4.1.7 標志 60
4.2 scanf函數 62
4.2.1 Visual Studio安全報錯 62
4.2.2 scanf函數的使用公式 64
4.2.3 scanf函數的匹配規則 66
4.2.4 輸入字符 67
4.2.5 輸入字符串 68
第5章 運算符和表達式 69
5.1 表達式 69
5.2 運算符 70
5.3 類型轉換 77
5.3.1 同類型運算 78
5.3.2 不同類型運算 80
5.3.3 自動類型轉換 84
5.3.4 整型運算丟失精度 85
5.3.5 強制類型轉換 86
5.3.6 賦值造成的類型轉換 87
5.4 關系運算符 88
5.4.1 大於(>)和小於(<) 88
5.4.2 大於或等於(>=)和小於或等於(<=) 89
5.4.3 等於(==)和不等於(!=) 89
5.5 邏輯運算符 90
5.5.1 邏輯或(||)和邏輯與(&&) 91
5.5.2 邏輯非(!) 92
5.5.3 運算符優先級 92
第6章 控制流 94
6.1 分支結構 94
6.1.1 分支流程 95
6.1.2 else關鍵字 96
6.1.3 復合語句 97
6.1.4 嵌套if語句 99
6.1.5 else if語句 102
6.1.6 條件運算符 103
6.2 循環結構 104
6.2.1 while循環 105
6.2.2 for循環 107
6.2.3 do-while循環 110
6.2.4 循環嵌套 111
6.3 break和continue 112
6.3.1 break跳出循環 112
6.3.2 continue開始新一輪循環 115
6.3.3 使用break和continue 115
6.3.4 循環嵌套中使用break和continue 116
6.4 多重選擇 117
6.4.1 switch語句 118
6.4.2 在switch中使用break 120
6.4.3 連續轉換程序 121
6.4.4 break和continue的作用範圍 123
第7章 數組 125
7.1 初識數組 125
7.2 數組初始化 126
7.3 訪問數組元素 128
7.3.1 遍歷數組的循環 128
7.3.2 小心數組越界 129
7.3.3 不初始化數組會怎樣 130
7.4 數組占用空間大小 131
7.5 數組賦值 131
7.5.1 逐個元素賦值 132
7.5.2 內存復制 132
7.6 多維數組 133
7.6.1 使用數組作為數組的元素 133
7.6.2 二維數組 134
7.6.3 實現更高維度的數組 136
7.7 字符串與字符數組 138
7.7.1 字符數組存儲字符串 138
7.7.2 字符串結尾標記'\0' 139
7.7.3 字符數組的大小及長度 141
7.7.4 修改字符數組 142
7.7.5 從鍵盤輸入字符串到字符數組中 143
7.7.6 其他的輸入和輸出函數 144
7.8 輸入和輸出緩存 146
7.8.1 輸出緩存區 147
7.8.2 輸入緩存區 148
7.8.3 非標準的輸入函數 151
第8章 函數 154
8.1 函數的定義 154
8.2 函數的調用 155
8.3 使用函數的意義 156
8.3.1 計算三角形面積 156
8.3.2 復用代碼 158
8.4 函數返回值 159
8.5 函數聲明 160
8.6 形參與實參 163
8.6.1 自動類型轉換 163
8.6.2 形參與實參相互獨立 164
8.6.3 不同函數的變量相互獨立 166
8.6.4 數組作為函數參數 166
8.7 函數遞歸 167
8.7.1 函數遞歸調用的示例 167
8.7.2 正確的遞歸實現 168
8.7.3 遞推和回歸 169
8.7.4 用遞歸計算階乘 170
8.7.5 遞歸計算斐波那契數列 171
8.8 調試代碼 172
8.8.1 調試模式與發布模式 172
8.8.2 調試功能在Visual Studio中的運用 174
第9章 指針 179
9.1 指針基礎 179
9.1.1 內存和內存地址 179
9.1.2 指針類型 181
9.1.3 使用指針 182
9.1.4 指針類型的大小 183
9.1.5 指針類型轉換 185
9.1.6 指針基礎例題 185
9.2 指針運算 186
9.2.1 指針與整型進行加減 186
9.2.2 指針運算的應用 188
9.2.3 同類型指針間的減法運算 189
9.2.4 其他類型的指針運算 190
9.2.5 指針運算例題 190
9.3 指針和數組 191
9.3.1 通過首元素獲取數組首地址 191
9.3.2 通過數組名獲取數組首地址 192
9.3.3 指針和數組的關系 194
9.3.4 指針與數組例題 195
9.4 指針作為函數參數傳遞 196
9.4.1 將指針作為函數參數進行傳遞 198
9.4.2 通用指針void * 199
9.4.3 將數組作為函數參數進行傳遞 200
9.4.4 將指針作為函數參數傳遞的例題 201
9.5 多級指針 202
9.5.1 指針的指針 202
9.5.2 多級指針的應用 204
9.5.3 多級指針例題 205
9.6 指針數組 205
9.6.1 定義、初始化和訪問指針數組 206
9.6.2 更復雜的例子 206
9.6.3 指針數組例題 208
9.7 函數返回指針 209
9.7.1 從函數中返回多個變量 210
9.7.2 函數返回指針例題 211
9.8 指針和多維數組 212
9.8.1 數組名的轉換規則 213
9.8.2 多維數組名和指針 213
9.8.3 移動數組指針 215
9.8.4 為數組指針取值 216
9.8.5 指針訪問與下標訪問等價 219
9.8.6 對數組名取地址 222
9.8.7 數組指針的運用 222
9.8.8 指針和多維數組例題 223
9.9 指針和三維數組 224
9.9.1 指針訪問三維數組元素 225
9.9.2 指針和三維數組例題 228
9.10 聲明器 229
9.10.1 聲明與使用形式統一 230
9.10.2 函數聲明器 230
9.10.3 聲明器中的優先級 230
9.11 函數指針和數組 233
9.11.1 函數指針 233
9.11.2 使用函數指針 234
9.11.3 函數指針數組 235
9.11.4 函數指針的運用 236
9.11.5 函數指針和數組例題 237
第10章 字符串 239
10.1 字符串和字符指針 239
10.1.1 字符數組和指針 241
10.1.2 使用指針處理字符串 242
10.2 const關鍵字 243
10.2.1 使用const修飾數組元素 244
10.2.2 使用const修飾指針所指向的數據 244
10.2.3 使用const修飾指針本身 245
10.2.4 使用const修飾基本變量 246
10.3 字符串處理函數 246
10.3.1 strlen函數:獲取字符串長度 246
10.3.2 strcat函數:拼接字符串 247
10.3.3 strcpy函數:復制字符串 248
10.3.4 strcmp函數:比較字符串 249
10.4 實現字符串處理函數 250
10.4.1 mstrlen函數 250
10.4.2 mstrcat函數 252
10.4.3 mstrcpy函數 254
10.4.4 mstrcmp函數 255
第11章 復合數據 258
11.1 結構化數據 258
11.1.1 使用數組存儲數據 259
11.1.2 交互式程序 261
11.1.3 數據聚合 263
11.2 結構體 266
11.2.1 結構體別名 267
11.2.2 初始化結構體 269
11.2.3 結構體數組 269
11.2.4 嵌套結構 270
11.2.5 指向結構體的指針 271
11.2.6 結構體在函數中傳遞 271
11.2.7 結構體例題 273
11.3 聯合體 274
11.3.1 聯合體的性質 276
11.3.2 聯合體的應用 276
11.4 枚舉 280
第12章 作用域和預處理器 283
12.1 標識符作用域 283
12.1.1 塊作用域 284
12.1.2 函數作用域 288
12.1.3 文件作用域 289
12.2 預處理指令 290
12.2.1 預處理指令的概念 290
12.2.2 #define 預處理指令的用法 292
12.2.3 帶參數的#define 293
12.2.4 宏函數的運算符 295
12.2.5 取消宏定義 298
12.3 typedef關鍵字 299
12.3.1 typedef關鍵字的概念 299
12.3.2 typedef和struct的關系 300
12.3.3 typedef與#define的區別 301
12.3.4 提高整型可移植性 302
12.4 條件編譯 303
12.4.1 #if指令 303
12.4.2 #else指令 304
12.4.3 #elif指令 305
12.4.4 #ifdef指令和#ifndef指令 306
第13章 多文件代碼和存儲類別 309
13.1 多文件代碼 309
13.1.1 預處理指令#include 309
13.1.2 多文件代碼 310
13.2 更復雜的多文件代碼 316
13.2.1 多文件代碼實現 316
13.2.2 頭文件守衛 322
13.3 存儲類別 324
13.3.1 自動變量 325
13.3.2 靜態變量 326
第14章 文件操作 332
14.1 創建和寫入文件 332
14.1.1 fopen函數 333
14.1.2 fprintf函數 334
14.1.3 fclose函數 334
14.1.4 文本模式與二進制模式 335
14.2 讀取文件 337
14.2.1 fscanf函數 337
14.2.2 fgetc函數 338
14.2.3 判斷文件狀態 339
14.2.4 fgets函數 340
14.3 寫入文件 341
14.3.1 fputc函數 342
14.3.2 fputs函數 343
14.3.3 fflush函數 345
14.3.4 文件偏移 346
14.3.5 更新文件 348
14.4 更多操作方式 350
14.4.1 以二進制形式保存數據 350
14.4.2 從文件中讀取二進制數據 354
第15章 位操作、動態內存管理和主函數參數 357
15.1 位操作 357
15.1.1 十進制轉二進制 357
15.1.2 十進制轉二進制函數 358
15.1.3 位運算符 361
15.1.4 左移和右移 365
15.2 動態內存管理 366
15.2.1 變長數組 367
15.2.2 申請內存空間 368
15.2.3 釋放內存空間 370
15.2.4 從函數中返回指針 371
15.3 主函數參數 373
15.3.1 ping命令 373
15.3.2 main函數參數 375
15.3.3 使用主函數參數 375