商品描述
本書是一本以正本清源為核心的C語言編程入門教材。作者針對市面上多數C語言教材存在的術語不規範、概念解釋不清(如stdio.h、#include的本質)、重要規則缺失(如"表達式有值”)等問題,決心從C語言國際標準出發進行撰寫。本書旨在清晰揭示C語言的本質,避免傳承自早期非標準教材的模糊與混亂。它獨樹一幟地從計算機基本原理講起,引導零基礎讀者構建正確的知識體系,並強調概念的邏輯嚴謹性(如棄用模糊的"變量”概念,嚴格采用"標識符”、"對象”、"左值”等標準術語),最終目標是為讀者深入學習乃至直接閱讀C語言標準文檔打下堅實基礎。
目錄大綱
第1章 計算機和編程語言 1
1.1 用電表示數字 2
1.2 二進制加法機 4
1.3 具有記憶功能的器件——寄存器 5
1.4 帶寄存器的加法機 7
1.5 能做四則運算的機器 8
1.6 機器指令 10
1.7 內存 13
1.8 自動計算 18
1.9 處理器 21
1.10 匯編語言的產生 24
1.11 高級語言的出現 27
本章習題 33
第2章 操作系統和C實現 35
2.1 計算機硬件 36
2.2 操作系統及其編程接口 37
2.2.1 為什麼需要操作系統 38
2.2.2 操作系統的用戶界面和編程接口 40
2.3 C實現 43
本章習題 50
第3章 輸入輸出、庫和頭文件 51
3.1 在Windows上播放音樂的小程序 52
3.2 庫和庫函數的例子 55
3.3 程序的編譯、鏈接和執行 57
3.4 頭文件和文件包含 61
3.5 C標準庫 65
本章習題 68
第4章 從1加到100 70
4.1 從1加到100的第1種寫法 71
4.1.1 註釋 73
4.1.2 標識符和對象 74
4.1.3 表達式和語句 76
4.1.4 while語句 77
4.1.5 關系表達式 78
4.1.6 復合語句 79
4.1.7 復合賦值運算符 80
4.1.8 函數調用表達式 81
4.1.9 格式化輸出 82
4.2 表達式的值和副作用 83
4.2.1 賦值表達式的值和副作用 84
4.2.2 運算符的結合性 87
4.2.3 關系運算符的值 88
4.2.4 加性運算符 89
4.2.5 乘性運算符 90
4.2.6 遞增和遞減運算符 90
4.3 從1加到100的第2種寫法 93
4.3.1 初始化和初始化器 94
4.3.2 運算符的優先級 94
4.4 從1加到100的第3種寫法 96
4.5 從1加到100的第4種寫法 97
4.6 從1加到100的第5種寫法 99
do語句 100
4.7 從1加到100的第6種寫法 102
for語句 102
4.8 從1加到100的第7種寫法 104
4.9 從1加到100的第8種寫法 105
空語句 105
4.10 從1加到100的第9種寫法 106
標識符的作用域 107
本章習題 109
第5章 Code::Blocks集成開發環境 111
5.1 下載和安裝Code::Blocks 113
5.2 運行Code::Blocks 113
5.3 配置工具鏈 114
5.4 使用Code::Blocks編寫和運行程序 115
5.5 在Code::Blocks裏調試程序 120
第6章 更多的編程實例 124
6.1 打印表格 125
宏定義和宏替換 127
6.2 打印九九乘法表(之一) 129
6.3 打印九九乘法表(之二) 131
6.4 百錢百雞問題 134
6.4.1 if語句 135
6.4.2 邏輯與、邏輯或和等性運算符 136
6.4.3 語法樹 138
6.4.4 嵌套的if語句 139
6.5 尋找符合條件的三位自然數 140
6.5.1 括號表達式 142
6.5.2 搖擺的else子句 144
6.6 素數判定 145
6.6.1 標準整數類型 145
6.6.2 return語句 149
6.6.3 整數類型轉換 152
6.6.4 整型常量 154
6.6.5 main函數的末尾可以省略return 0 156
6.6.6 函數原型 157
6.7 函數的遞歸調用 158
6.7.1 什麼是遞歸 159
6.7.2 遞歸調用的原理 160
6.7.3 文件作用域 165
6.7.4 靜態存儲期 166
6.7.5 自動存儲期 167
6.7.6 具有靜態存儲期且只在塊內可見的對象 169
6.8 實浮點類型 171
6.8.1 標準浮點類型 171
6.8.2 十進制浮點類型 173
6.9 浮點常量 175
6.10 實浮點類型的應用實例 176
6.10.1 整數—實浮點類型的相互轉換 177
6.10.2 實浮點類型的互相轉換 178
本章習題 179
第7章 指針 180
7.1 一元&和一元*運算符 181
7.2 指針類型的對象 185
7.3 類型名和強制類型轉換 189
7.4 左值和左值轉換 193
7.5 參數類型為指針的函數 195
7.6 指向函數的指針 198
7.6.1 函數指示符-指針轉換 199
7.6.2 指向函數的指針 200
7.7 返回指針的函數 203
條件表達式 205
7.8 指向指針的指針 206
7.9 const限定的類型 210
7.9.1 指向const限定類型的指針 212
7.9.2 const限定的指針(類型) 213
7.10 restrict限定的指針類型 215
7.11 空指針常量和空指針 219
7.12 格式化輸入函數scanf 220
本章習題 223
第8章 數組 225
8.1 聲明數組類型的對象 226
數組對象的初始化 228
8.2 數組元素的訪問 230
8.2.1 運算符sizeof 231
8.2.2 類型定義 234
8.3 數組的應用:冒泡排序 238
8.4 指針運算 241
8.5 字符數組 246
8.5.1 字符集和字符編碼 246
8.5.2 字符類型 249
8.5.3 字符常量 250
8.5.4 脫轉序列 251
8.5.5 用putchar庫函數打印字符 253
8.6 字符串 253
8.6.1 論程序的可讀性 255
8.6.2 puts庫函數 256
8.7 字面串 257
8.7.1 包含脫轉序列的字面串 259
8.7.2 用作初始化器的字面串 260
8.8 指向數組的指針 263
8.9 變長數組 266
8.10 類型的兼容性 269
8.11 數組-指針轉換 272
8.12 下標運算的本質是指針運算 274
8.13 printf和scanf庫函數的原型 276
8.14 應用實例:字符串比較 277
strcmp標準庫函數 283
8.15 應用實例:連接兩個字符串 283
strcat和strcpy標準庫函數 287
8.16 應用實例:打印對象的每字節的值 289
默認實參提升 291
8.17 元素類型為數組的數組 292
多維數組的初始化和訪問 294
8.18 數組類型的參數 299
8.19 元素類型為指針的數組 301
8.20 main函數的原型和命令行參數 305
8.21 指向void的指針 314
本章習題 317
第9章 中文的輸入和輸出 318
9.1 字符、字符集和字符編碼 319
9.2 ISO 2022和GB 2311字符代碼結構標準 322
9.3 GB 2312字符集及其編碼方案 324
9.4 EUC編碼方案 326
9.5 GBK字符集及其編碼方案 329
9.6 ISO 10646和Unicode 330
9.6.1 UCS的基本多語種平面 332
9.6.2 UCS的編碼形式 333
9.6.3 字節序(大端和小端) 336
9.6.4 UCS的編碼方案 339
9.7 字符集和字符編碼的應用現狀 343
9.8 GB 18030字符集及其編碼方案 344
9.9 源字符集 345
9.10 多字節字符 346
9.11 執行字符集 347
9.12 C語言的國際化 349
9.13 寬字符 354
本章習題 359
第10章 結構、聯合與枚舉 360
10.1 結構類型 361
10.1.1 冪和平方根的標準庫函數 363
10.1.2 結構成員的訪問 364
10.1.3 結構類型的標記 364
10.1.4 庫的鏈接 366
10.1.5 標準庫的斜邊函數 366
10.2 結構對象的內存布局 368
10.2.1 對齊和運算符alignof 369
10.2.2 函數式宏定義 371
10.2.3 宏運算符(預處理器記號)# 372
10.2.4 結構對象的內部和尾部填充 373
10.3 聯合類型 376
10.4 聯合的應用:打印float數值的位模式 379
10.4.1 常量表達式 380
10.4.2 逐位移動運算符 382
10.4.3 整型提升 386
10.4.4 逐位與運算符 388
10.4.5 常規算術轉換 389
10.4.6 逐位或運算符 393
10.4.7 位精度整數類型 394
10.5 枚舉類型和枚舉常量 396
switch語句 400
10.6 結構、聯合與枚舉的應用實例 405
10.6.1 匿名結構和匿名聯合 407
10.6.2 元素類型為結構的數組 410
10.6.3 邏輯與和邏輯或的短路效應 410
本章習題 415
第11章 鏈表和動態內存分配 416
11.1 學員信息管理 417
11.1.1 鏈表和自引用的結構 417
11.1.2 模塊化、多文件的程序設計 421
11.1.3 條件包含 431
11.2 添加學員信息 433
11.2.1 動態內存分配 434
11.2.2 成員選擇運算符“->” 436
11.2.3 邏輯反運算符 440
11.2.4 逗號運算符 443
11.2.5 goto語句 446
11.2.6 配方法在編程中的應用 448
11.3 打印學員信息 450
11.4 釋放鏈表上的所有節點 452
本章習題 453
第12章 輸入輸出和文件操作 454
12.1 外部存儲設備和文件 455
12.2 輸入輸出和流 456
12.2.1 文本流和二進制流 457
12.2.2 標準輸入、標準輸出和標準錯誤 461
12.2.3 輸入輸出的重定向 463
12.3 字符的輸入輸出函數 464
12.4 直接的輸入輸出 466
12.5 格式化輸入輸出函數 469
12.5.1 格式化輸入scanf和fscanf函數 469
12.5.2 格式輸出printf和fprintf函數 477
12.6 學員信息文件的讀寫 481
12.6.1 將學員信息寫入文件 484
12.6.2 從文件讀取學員信息 486
12.7 改進後的學員信息管理程序 488
第13章 學員信息管理系統 490
13.1 主程序的執行流程 491
13.1.1 顯示系統主菜單 492
13.1.2 菜單的選擇和處理 493
13.2 學員信息的刪除 494
13.3 學員信息的查詢 496
本章習題 503
附錄A C語言類型系統全圖 504
附錄B C語言運算符一覽表 506
