內容簡介
閱讀《C語言實用之道》,可以學習實用的C技術,包括在可復用的函數中經常用到的算法。在本書中,你將輕鬆獲得以下代碼和建議:代碼布局和預處理器;控製結構、迭代和選擇;指針和結構;數據庫;可復用性;列錶、數組、FIFO和棧;搜索和排序;遞歸;二叉樹;C語言中的和自建的字符串輔助功能;使用Mongoose開發Web服務;構建MathSearch迷宮的遊戲應用代碼;以及嵌入式軟件。
《C語言實用之道》除瞭提供可立即投入使用的模塊以外,還教你如何充分用好C語言,這是很多麵嚮初學者的其他書籍所不能提供的。
本書特色
避免常見的C陷阱與缺陷
用好列錶和數組
執行搜索和排序
利用二叉樹存儲和檢索數據
用好遞歸
管理異常
訪問數據庫
利用數值計算方法,結閤實際應用計算積分
通過一種便捷的、不齣錯的方法來操縱字符串
構建一個MathSearch遊戲應用(類似於WordSearch遊戲)
通過一種便捷的、不齣錯的方法來操縱字符串
處理與嵌入式應用相關的問題
作者簡介
作者簡介:在Zambon的職業生涯中,他去過五個不同國傢的八個城市,曾任軟件開發人員、係統顧問、過程改進經理、項目經理和首席運營官。自2008年初以來,他緻力於編寫軟件來生成和解決數字難題。
訪問他的網站http://zambon.com.au/,可以看到他撰寫的論文和所著書籍的完整列錶。
譯者簡介:
潘愛民,任職於阿裏巴巴業務平颱事業部,擔任首席架構師職位。長期從事軟件和係統技術的研究與開發設計工作,撰寫瞭大量軟件技術文章,著譯瞭多部經典計算機圖書,在國內外學術刊物上發錶瞭30多篇文章。曾任教於北京大學和清華大學(兼職),後進入工業界,先後任職於微軟亞洲研究院、盛大網絡發展有限公司和阿裏巴巴集團。獲得瞭數學學士學位和計算機科學博士學位,主要研究領域包括軟件設計、信息安全、操作係統和互聯網技術。
目錄
第1章 引言 1
1.1 編碼風格 1
1.1.1 縮進 2
1.1.2 命名和其他規範 4
1.1.3 goto的使用 5
1.2 如何閱讀本書 7
第2章 微妙之C 9
2.1 變量的作用域和生命周期 9
2.1.1 局部變量 9
2.1.2 全局變量 13
2.1.3 函數 14
2.2 按值調用 15
2.3 預處理器宏 18
2.4 布爾值 19
2.5 結構打包 22
2.6 字符和區域 24
2.7 普通字符和寬字符 27
2.8 處理數值 32
2.8.1 整數 32
2.8.2 浮點數 34
2.9 本章小結 54
第3章 迭代、遞歸和二叉樹 55
3.1 迭代 55
3.2 遞歸 57
3.3 二叉樹 59
3.3.1 圖形化顯示一棵樹 65
3.3.2 生成一棵隨機樹 83
3.3.3 遍曆一棵樹 88
3.3.4 更多關於二叉樹的內容 93
3.4 本章小結 95
第4章 列錶、棧和隊列 97
4.1 列錶 98
4.2 棧 99
4.2.1 基於數組的棧 99
4.2.2 基於鏈錶的棧 109
4.3 隊列 113
4.3.1 基於數組的隊列 114
4.3.2 基於數組的隊列的更多內容 120
4.3.3 基於鏈錶的隊列 126
4.4 本章小結 130
第5章 異常處理 133
5.1 長跳轉 134
5.2 THROW 135
5.3 TRY和CATCH 136
5.4 多個CATCH 144
5.5 多個TRY 145
5.6 異常用法樣例 149
5.7 本章小結 152
第6章 字符串輔助功能 153
6.1 字符串的分配和釋放 154
6.1.1 str_new( ) 155
6.1.2 str_release( ) 159
6.1.3 str_release_all( ) 161
6.1.4 str_list( ) 162
6.1.5 一些例子 163
6.1.6 多個棧 166
6.2 字符串格式化 169
6.3 字符串信息 171
6.4 字符串更新 173
6.4.1 字符串拷貝 173
6.4.2 字符串轉換 176
6.4.3 字符串整理 177
6.4.4 字符串移除 179
6.5 搜索 181
6.5.1 找到一個字符 181
6.5.2 找到一個子串 186
6.6 替換 189
6.6.1 替換一個字符 189
6.6.2 替換一個子串 191
6.7 提取一個子串 193
6.8 拼接字符串 196
6.9 更多功能 200
6.10 本章小結 201
第7章 動態數組 205
7.1 數組的分配與釋放 205
7.1.1 分配一個數組 206
7.1.2 釋放一個數組 208
7.1.3 多個棧 212
7.2 改變一個數組的大小 215
7.3 數組的拷貝和復製 219
7.4 選擇數組元素 222
7.5 本章小結 225
第8章 搜索 227
8.1 比較 227
8.1.1 C語言的標準比較函數 227
8.1.2 比較結構 230
8.1.3 比較數組 232
8.1.4 模糊化 232
8.2 搜索 238
8.2.1 未排序的整數數組 238
8.2.2 未排序的指針數組 246
8.2.3 排序的數組 251
8.2.4 鏈錶與二叉搜索樹 257
8.3 本章小結 277
第9章 排序 279
9.1 插入排序 279
9.2 希爾排序 280
9.3 冒泡排序 285
9.4 Quicksort(快排) 286
9.5 整數數組 296
9.6 標準C函數 298
9.7 本章小結 301
第10章 數值積分 303
10.1 從單變量函數開始 303
10.2 梯形規則 306
10.3 Simpson規則 310
10.4 Newton-Cotes公式 313
10.5 決定何時停止 317
10.6 奇點 321
10.7 濛特卡洛 324
10.8 3D積分 329
10.8.1 積分域 330
10.8.2 從2D的梯形到3D的棱柱 331
10.8.3 改進棱柱規則 336
10.8.4 將矩形規則轉換成3D 340
10.9 多重積分的最後一些考慮 342
10.10 本章小結 343
第11章 嵌入式軟件 345
11.1 位操作 346
11.2 端 349
11.3 嵌入式環境 351
11.3.1 裸主闆 351
11.3.2 實時OS(RTOS) 352
11.3.3 高級OS 353
11.4 信號和中斷 353
11.5 並發性 365
11.6 本章小結 371
第12章 數據庫 373
12.1 MySQL 374
12.1.1 使用CLI創建和填充一個數據庫 374
12.1.2 MySQL Workbench 380
12.1.3 在C程序中使用MySQL 382
12.2 SQLite 395
12.2.1 在CLI中使用SQLite 398
12.2.2 在C程序中使用SQLite 399
12.2.3 使用動態字符串和數組 404
12.3 本章小結 408
第13章 使用Mongoose開發Web服務器 409
13.1 Web頁麵和協議 409
13.2 動態Web頁麵 413
13.3 最簡單的支持Web服務器的應用程序 413
13.3.1 事件處理器函數 415
13.3.2 主程序 416
13.4 支持Web服務器的應用程序 416
13.4.1 靜態變量 419
13.4.2 main( ) 420
13.4.3 e_handler( )、get_x( )和send_response( ) 420
13.4.4 index.html 423
13.5 定製Mongoose 428
13.6 本章小結 431
第14章 遊戲應用:MathSearch 433
14.1 MathSearch規範和設計 434
14.1.1 MathSearch規範 434
14.1.2 MathSearch設計 435
14.2 實現MathSearch 437
14.3 模塊:count 456
14.4 模塊:display 457
14.5 模塊:save_html 464
14.6 模塊:save_images 470
14.7 本章小結 475
附錄A 縮寫詞 477
附錄B SQL介紹 483
前言/序言
這是一本講述C語言實踐的書,作者以自身的實踐和思考來展示C語言編程中的基礎概念和典型使用場景。C語言本身簡潔而又靈活,有強大的錶達能力,幾乎可以實現迄今為止所有能夠想象到的計算能力。然而,越來越多的程序員在棄用C語言,改而學習更具生産效率的編程語言。很多人提齣的一個問題是,學瞭C語言有什麼用?從現實的角度,用C語言編寫的、新的大型軟件越來越少,但是,一些關鍵的軟件往往離不開C語言,如圖形引擎、網絡協議等一些性能關鍵的模塊,當然少不瞭像操作係統和驅動程序之類的最底層軟件。因此,C語言在各種編程語言排行榜上始終排在前列。另外,C語言也適閤一些“小而美”的程序,在《C語言實用之道》中可以看到這樣一些例子。以我個人之見,C語言是最貼近計算機工作原理的高級語言,並且Internet上有豐富的文檔和代碼積纍,每一個對計算機工作原理有好奇心的IT從業人員都應該掌握C語言。
《C語言實用之道》內容涵蓋兩大部分。第一部分介紹C語言編程中的基本概念和程序設計基礎(前7章),涉及變量、宏、結構、本地化、寬字符、整數和浮點數的錶達形式等基本語言層麵的概念和要點(第2章),也包括迭代、遞歸、鏈錶、棧、隊列、異常等程序設計中廣泛使用的設計元素(第3至第5章),同時作者還完整剖析瞭兩個實用案例:字符串(第6章)和動態數組(第7章)。第二部分是用C語言來完成特定領域中的開發示例,包括搜索(第8章)、排序(第9章)、數值積分(第10章)、嵌入式軟件開發(第11章)、嵌入數據庫功能(第12章)、嵌入Web服務器(第13章)以及遊戲應用開發(第14章)。即使讀者在實踐中不需要涉獵如此廣泛的應用範圍,通過閱讀這些章,也可以瞭解到C語言在這些領域中是如何被使用並發揮作用的。
這不是一本教科書,但是其內容非常適閤學習C語言,並且作者的敘述風格也很有特色,他直接以第一人稱和第二人稱來講解書中的內容,就好像在課堂上傳授C語言的開發經驗。《C語言實用之道》在錶達上有明顯的口語化特點,相信在閱讀時會有一種親切感,學習也相對要輕鬆一些。然而,《C語言實用之道》通過大量的例子和代碼來講解概念和技巧,這確保瞭《C語言實用之道》內容的嚴謹性,並且不少代碼非常有啓發意義。此外,《C語言實用之道》的代碼又是成體係的,前後一緻性比較好,如第6和第7章中講到的字符串和動態數組組件,在後麵的章節中也都用到瞭。從這個角度看,這《C語言實用之道》又非常適閤作為課程參考材料,教師在講解瞭C語言基礎知識以後,可以成體係地引入這《C語言實用之道》中的內容。
我已經很多年沒有接手翻譯或著書的工作瞭,當王軍編輯嚮我推薦這《C語言實用之道》時,無論是內容,還是作者的經曆,都引起我的共鳴。作為一名C程序員老兵,我看到每一個標準C函數都有一種親切感。基於這樣的心情,我答應王軍編輯翻譯這《C語言實用之道》。經過一年來的努力,終於完成瞭翻譯工作。原著中有一些筆誤,我在翻譯過程中修正瞭一些,但我相信,翻譯本身難免也會引入新的錯誤,雖然經過兩遍校對,但還會留有錯誤,請讀者諒解。
潘愛民
2017年12月於杭州
C語言實用之道 epub pdf mobi txt 電子書 下載 2024
C語言實用之道 下載 epub mobi pdf txt 電子書