C語言入門經典(第5版)

C語言入門經典(第5版)

《C語言入門經典(第5版)》是2013年清華大學出版社出版的圖書,作者是[美] Ivor Horton。

內容簡介

第五版是全新推出的最新版本,主要是為新手推出的堪比神界的修真秘籍,看成是c語言界的修煉秘籍,融合了作者多年的編程經驗,給人一種深入淺出的感覺,很適合初學者。 讀過本之後可以感受到C語言的側重點在於實踐,從實踐出發,提供了乾貨,讓讀者明白如何在實際編程中去運用,在每章最後都會有一節來讓讀者自己製作一個稍大些的程式,通過"問題-分析-解決方案"的方式逐步引導讀者實際地運用本章方法去編程,體驗編程的樂趣和成就感,對實踐技能的提高有很大幫助。

C語言是每一位程式設計師都應該掌握的基礎語言。C語言是微軟.NET編程中使用的C#語言的基礎;C語言是iPhone、iPad和其他蘋果設備編程中使用的Objective-C語言的基礎;C語言是在很多環境中(包括GNU項目)被廣泛使用的C++語言的基礎。 C語言也是Linux作業系統及其很多功能的基礎。學習C語言可以給編程職業生涯提供牢固的基礎,也有助於更好地理解更為現代的語言(如Java)。

《C語言入門經典(第5版)》主要介紹最基礎的計算機語言之一——C語言。

本書從最基礎的內容開始,步步深入講解作為一位稱職的C語言程式設計師應該具備的知識和技能。

編輯推薦

◆闡述C語言的核心特徵,例如循環和分支

◆如何使用指針和指令動態管理記憶體

◆如何使用頭檔案和函式模組化代碼

◆程式如何通過鍵盤、顯示器和數據檔案讀寫數據

◆如何通過預處理命令在編譯時最佳化代碼

◆如何使用結構有效地管理輸入數據

本書完整地介紹了一個C應用程式的開發過程,這樣你在閱讀過程中可以結合實際的套用場景提高編程技能。書中的樣例提供了實驗的基礎,可以通過修改其中的部分代碼來對比前後程式運行的結果。後面的練習題用來測試對新知識、新技能的掌握情況,如果需要練習題答案,可以網上下載。

閱讀完本書,你應該有能力和信心開發自己的C應用程式,並且具備在大型項目中套用C語言思想的技能。第5版詳細介紹了C語言的最新國際標準,並且修訂涵蓋了語言編譯器新支持的C11功能。

圖書目錄

第1章C語言編程 1

1.1C語言 1

1.2標準庫 2

1.3學習C 2

1.4創建C程式 2

1.4.1編輯 2

1.4.2編譯 3

1.4.3連結 4

1.4.4執行 4

1.5創建第一個程式 5

1.6編輯第一個程式 5

1.7處理錯誤 6

1.8剖析一個簡單的程式 7

1.8.1注釋 7

1.8.2預處理指令 8

1.8.3定義main()函式 9

1.8.4關鍵字 10

1.8.5函式體 10

1.8.6輸出信息 11

1.8.7參數 11

1.8.8控制符 11

1.8.9三字母序列 13

1.9預處理器 14

1.10用C語言開發程式 14

1.10.1了解問題 14

1.10.2詳細設計 15

1.10.3實施 15

1.10.4測試 15

1.11函式及模組化編程 16

1.12常見錯誤 19

1.13要點 19

1.14小結 20

1.15習題 20

第2章編程初步 21

2.1計算機的記憶體 21

2.2什麼是變數 23

2.3存儲整數的變數 24

2.3.1變數的使用 28

2.3.2變數的初始化 29

2.4變數與記憶體 36

2.4.1帶符號的整數類型 36

2.4.2無符號的整數類型 37

2.4.3指定整數常量 37

2.5使用浮點數 39

2.6浮點數變數 41

2.6.1使用浮點數完成除法運算 42

2.6.2控制輸出中的小數位數 43

2.6.3控制輸出的欄位寬度 43

2.7較複雜的表達式 44

2.8定義命名常量 46

2.8.1極限值 49

2.8.2sizeof運算符 51

2.9選擇正確的類型 52

2.10強制類型轉換 55

2.10.1自動轉換類型 56

2.10.2隱式類型轉換的規則 56

2.10.3賦值語句中的隱式類型轉換 57

2.11再談數值數據類型 58

2.11.1字元類型 58

2.11.2字元的輸入輸出 59

2.11.3枚舉 62

2.11.4存儲布爾值的變數 64

2.12賦值操作的op=形式 65

2.13數學函式 66

2.14設計一個程式 67

2.14.1問題 68

2.14.2分析 68

2.14.3解決方案 70

2.15小結 73

2.16練習 74

第3章條件判斷 75

3.1判斷過程 75

3.1.1算術比較 75

3.1.2基本的if語句 76

3.1.3擴展if語句:if-else 79

3.1.4在if語句中使用代碼塊 82

3.1.5嵌套的if語句 83

3.1.6測試字元 85

3.1.7邏輯運算符 88

3.1.8條件運算符 91

3.1.9運算符的優先權 94

3.2多項選擇問題 98

3.2.1給多項選擇使用else-if語句 98

3.2.2switch語句 99

3.2.3goto語句 107

3.3按位運算符 108

3.3.1按位運算符的op=用法 110

3.3.2使用按位運算符 111

3.4設計程式 114

3.4.1問題 114

3.4.2分析 114

3.4.3解決方案 114

3.5小結 118

3.6練習 118

第4章 循環 119

4.1 循環 119

4.2 遞增和遞減運算符 120

4.3 for循環 120

4.4 for循環的一般語法 124

4.5 再談遞增和遞減運算符 125

4.5.1 遞增運算符 125

4.5.2 遞增運算符的前置和後置形式 125

4.5.3 遞減運算符 126

4.6 再論for循環 127

4.6.1 修改for循環變數 129

4.6.2 沒有參數的for循環 129

4.6.3 循環內的break語句 130

4.6.4 使用for循環限制輸入 132

4.6.5 生成偽隨機整數 135

4.6.6 再談循環控制選項 137

4.6.7 浮點類型的循環控制變數 137

4.7 while循環 138

4.8 嵌套循環 140

4.9 嵌套循環和goto語句 146

4.10 do-while循環 147

4.11 continue語句 149

4.12 設計程式 150

4.12.1 問題 150

4.12.2 分析 150

4.12.3 解決方案 151

4.13 小結 162

4.14 習題 163

第5章 數組 165

5.1 數組簡介 165

5.1.1 不用數組的程式 165

5.1.2 什麼是數組 167

5.1.3 使用數組 168

5.2 定址運算符 171

5.3 數組和地址 173

5.4 數組的初始化 174

5.5 確定數組的大小 175

5.6 多維數組 176

5.7 多維數組的初始化 178

5.8 變長數組 184

5.9 設計一個程式 186

5.9.1 問題 186

5.9.2 分析 186

5.9.3 解決方案 187

5.10 小結 193

5.11 習題 193

第6章 字元串和文本的套用 195

6.1 什麼是字元串 195

6.2 存儲字元串的變數 197

6.3 字元串操作 202

6.3.1 檢查對C11的支持 202

6.3.2 確定字元串的長度 203

6.3.3 複製字元串 204

6.3.4 連線字元串 204

6.3.5 比較字元串 208

6.3.6 搜尋字元串 211

6.3.7 單元化字元串 215

6.3.8 將換行符讀入字元串 219

6.4 分析和轉換字元串 221

6.4.1 轉換字元的大小寫形式 223

6.4.2 將字元串轉換成數值 225

6.5 設計一個程式 227

6.5.1 問題 227

6.5.2 分析 227

6.5.3 解決方案 228

6.6 小結 233

6.7 習題 233

第7章指針 235

7.1指針初探 235

7.1.1聲明指針 236

7.1.2通過指針訪問值 237

7.1.3使用指針 240

7.1.4指向常量的指針 244

7.1.5常量指針 244

7.1.6指針的命名 245

7.2數組和指針 245

7.3多維數組 248

7.3.1多維數組和指針 252

7.3.2訪問數組元素 253

7.4記憶體的使用 256

7.4.1動態記憶體分配:malloc()函式 256

7.4.2釋放動態分配的記憶體 257

7.4.3用calloc()函式分配記憶體 261

7.4.4擴展動態分配的記憶體 262

7.5使用指針處理字元串 265

7.5.1使用指針數組 266

7.5.2指針和數組記號 272

7.6設計程式 276

7.6.1問題 276

7.6.2分析 277

7.6.3解決方案 277

7.7小結 284

7.8習題 285

第8章編程的結構 287

8.1程式的結構 287

8.1.1變數的作用域和生存期 288

8.1.2變數的作用域和函式 291

8.2函式 291

8.2.1定義函式 291

8.2.2return語句 294

8.3按值傳遞機制 299

8.4函式原型 300

8.5指針用作參數和返回值 301

8.5.1常量參數 302

8.5.2返回指針的風險 307

8.6小結 310

8.7習題 310

第9章函式再探 313

9.1函式指針 313

9.1.1聲明函式指針 313

9.1.2通過函式指針調用函式 314

9.1.3函式指針的數組 316

9.1.4作為變元的函式指針 319

9.2函式中的變數 321

9.2.1靜態變數:函式內部的追蹤 321

9.2.2在函式之間共享變數 323

9.3調用自己的函式:遞歸 325

9.4變元個數可變的函式 328

9.4.1複製va_list 331

9.4.2長度可變的變元列表的基本規則 331

9.5main()函式 332

9.6結束程式 333

9.6.1abort()函式 333

9.6.2exit()和atexit()函式 333

9.6.3_Exit()函式 334

9.6.4quick_exit()和at_quick_exit()函式 334

9.7提高性能 335

9.7.1內聯聲明函式 335

9.7.2使用restrict關鍵字 335

9.7.3_Noreturn函式限定符 336

9.8設計程式 336

9.8.1問題 336

9.8.2分析 337

9.8.3解決方案 338

9.9小結 351

9.10習題 352

第10章基本輸入和輸出操作 353

10.1輸入和輸出流 353

10.2標準流 354

10.3鍵盤輸入 354

10.3.1格式化鍵盤輸入 355

10.3.2輸入格式控制字元串 355

10.3.3輸入格式字元串中的字元 360

10.3.4輸入浮點數的各種變化 362

10.3.5讀取十六進制和八進制值 363

10.3.6用scanf_s()讀取字元 364

10.3.7從鍵盤上輸入字元串 366

10.3.8單個字元的鍵盤輸入 367

10.4螢幕輸出 372

10.4.1使用printf_s()的格式化輸出 372

10.4.2轉義序列 375

10.4.3整數輸出 375

10.4.4輸出浮點數 378

10.4.5字元輸出 379

10.5其他輸出函式 380

10.5.1螢幕的非格式化輸出 381

10.5.2數組的格式化輸出 381

10.5.3數組的格式化輸入 382

10.6小結 382

10.7習題 383

第11章結構化數據 385

11.1數據結構:使用struct 385

11.1.1定義結構類型和結構變數 387

11.1.2訪問結構成員 388

11.1.3未命名的結構 390

11.1.4結構數組 391

11.1.5表達式中的結構成員 393

11.1.6結構指針 393

11.1.7為結構動態分配記憶體 394

11.2再探結構成員 397

11.2.1將一個結構作為另一個結構的成員 397

11.2.2聲明結構中的結構 398

11.2.3將結構指針用作結構成員 399

11.2.4雙向鍊表 403

11.2.5結構中的位欄位 406

11.3結構與函式 407

11.3.1結構作為函式的變元 407

11.3.2結構指針作為函式變元 408

11.3.3作為函式返回值的結構 409

11.3.4二叉樹 414

11.4共享記憶體 421

11.5設計程式 425

11.5.1問題 425

11.5.2分析 426

11.5.3解決方案 426

11.6小結 438

11.7習題 438

第12章處理檔案 441

12.1檔案的概念 441

12.1.1檔案中的位置 442

12.1.2檔案流 442

12.2檔案訪問 442

12.2.1打開檔案 443

12.2.2快取檔案操作 445

12.2.3檔案重命名 446

12.2.4關閉檔案 447

12.2.5刪除檔案 447

12.3寫入文本檔案 448

12.4讀取文本檔案 449

12.5在文本檔案中讀寫字元串 452

12.6格式化檔案的輸入輸出 456

12.6.1格式化檔案輸出 456

12.6.2格式化檔案輸入 457

12.7錯誤處理 459

12.8再探文本檔案操作模式 460

12.9freopen_s()函式 461

12.10二進制檔案的輸入輸出 462

12.10.1以二進制模式打開檔案 462

12.10.2寫入二進制檔案 463

12.10.3讀取二進制檔案 464

12.11在檔案中移動 469

12.11.1檔案定位操作 469

12.11.2找出我們在檔案中的位置 470

12.11.3在檔案中設定位置 471

12.12使用臨時檔案 477

12.12.1創建臨時檔案 477

12.12.2創建唯一的檔案名稱 478

12.13更新二進制檔案 479

12.13.1修改檔案的內容 484

12.13.2從鍵盤輸入創建記錄 485

12.13.3將記錄寫入檔案 486

12.13.4從檔案中讀取記錄 486

12.13.5寫入檔案 487

12.13.6列出檔案內容 488

12.13.7更新已有的檔案內容 489

12.14檔案打開模式小結 495

12.15設計程式 496

12.15.1問題 496

12.15.2分析 496

12.15.3解決方案 496

12.16小結 501

12.17習題 501

第13章支持功能 503

13.1預處理 503

13.1.1在程式中包含頭檔案 503

13.1.2定義自己的頭檔案 504

13.1.3管理多個源檔案 504

13.1.4外部變數 505

13.1.5靜態函式 505

13.1.6替換程式原始碼 506

13.2宏 507

13.2.1看起來像函式的宏 507

13.2.2字元串作為宏參數 509

13.2.3在宏展開式中結合兩個變元 510

13.3多行上的預處理器指令 510

13.3.1預處理器邏輯指令 511

13.3.2條件編譯 511

13.3.3測試多個條件 512

13.3.4取消定義的標識符 512

13.3.5測試標識符的指定值的指令 512

13.3.6多項選擇 513

13.3.7標準預處理宏 514

13.4調試方法 515

13.4.1集成的調試器 515

13.4.2調試階段的預處理器 515

13.4.3斷言 519

13.5日期和時間函式 521

13.5.1獲取時間值 522

13.5.2獲取日期 525

13.5.3確定某一天是星期幾 529

13.6小結 531

13.7習題 531

第14章高級專用主題 533

14.1使用國際字元集 533

14.1.1理解Unicode 533

14.1.2設定區域 534

14.1.3寬字元類型wchar_t 535

14.1.4寬字元串的操作 537

14.1.5寬字元的檔案流操作 540

14.1.6存儲Unicode字元的固定大小類型 541

14.2用於可移植性的專用整數類型 545

14.2.1固定寬度的整型 545

14.2.2最小寬度的整型 545

14.2.3最大寬度的整型 546

14.3複數類型 546

14.3.1複數基礎 546

14.3.2複數類型和操作 547

14.4用執行緒編程 550

14.4.1創建執行緒 550

14.4.2退出執行緒 551

14.4.3把一個執行緒連線到另一個執行緒上 552

14.4.4掛起執行緒 555

14.4.5管理執行緒對數據的訪問 555

14.5小結 561

附錄A計算機中的數學知識 563

附錄BASCII字元代碼定義 571

附錄CC語言中的保留字 575

附錄D輸入輸出格式說明符 577

附錄E標準庫頭檔案 583

相關詞條

熱門詞條

聯絡我們