-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
6/20 新書到! 5/31 新書到! 5/24 新書到! 5/18 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

C指針原理揭秘:基于底層實現機制

( 簡體 字)
作者:劉 興 編著類別:1. -> 程式設計 -> C -> C
譯者:
出版社:機械工業出版社C指針原理揭秘:基于底層實現機制 3dWoo書號: 51172
詢問書籍請說出此書號!

有庫存
NT售價: 345

出版日:5/1/2019
頁數:254
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111626831
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么要寫這本書

C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾實驗室的D. M. Ritchie于1972年推出。1978年后,C語言已先后被移植到大、中、小及微型機上。它可以作為工作系統設計語言,編寫系統應用程序;也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,適用于系統軟件開發及嵌入式開發領域,具備很強的數據處理能力,不僅僅是在軟件開發上,在各類科研中也都需要用到C語言。

指針是C語言中廣泛使用的一種數據類型,是C語言中功能強大而又讓人迷惑的亮點,運用指針編程是C語言最主要的風格之一。作為一把雙刃劍,C指針讓C語言成了能編寫操作系統的接近硬件層的語言,能讓編程者實現很多其他語言實現不了的功能;但是有時編程者也會感到無所適從,因為稍有不慎,就將造成內存泄漏、指針越界、指針類型錯誤等異常情況。而匯編中間碼揭示了內存如何分配和使用、翻譯形成的底層語言如何工作等,通過分析匯編中間碼,揭開隱藏在C語言背后的秘密,剖析“C指針作為內存里的一個地址”這一事實。

C指針本質及其實現機制非常重要,為了讓編程者更好地掌握這把“雙刃劍”,本書從指針基礎講解入手,由淺入深,最后分析了匯編及底層語言,全面剖析了C指針。

讀者對象

程序員。C/C++程序員能在充分理解C指針以及指針實現機制的基礎上,開發軟件系統的中間件、核心庫,評估內存占用、運行效率、突發異常、程序后門等情況,提高軟件質量,增加可移植性,進行編譯優化;而對占用CPU時間較多的代碼可用匯編語言代替,提高軟件運行速度。在受限環境(嵌入開發、并行計算、冗余系統等)下,正確使用C指針以及評估軟件運行質量,能促使編寫的代碼更穩定、更安全、更高效。腳本語言程序員也能從C指針中收獲很多,Python、Perl等腳本語言都能與C/C++混合編程。

架構師。指針是C/C++語言的基石,任何復雜的算法和大型甚至云計算軟件系統都是基于這些基石構造的,只有掌握好系統的底層,才能提高系統整體運行效率。架構師在理解C/C++指針以及實現機制的基礎上,能根據軟件運行環境定制適合軟件需求的架構,每種軟件架構在內存分配、程序運行等方面都有自己的使用策略。目前,隨著大數據時代的來臨,云計算平臺發展很快,C/C++語言編程質量的改進能提高云計算中單機的運行效率和穩定性,能優化數據在云計算網絡的傳輸效率。

算法工程師。近年來,隨著國內計算機行業的發展,數據挖掘、機器學習、算法工程、云計算、編譯工程、芯片工程等新生事物相繼出現,這些以前僅在高校和科研院所研究的技術需要算法工程師的努力才能成為現實,而掌握諸如指針等編程知識是實現算法的基礎。

如何閱讀本書

全書分為準備篇、基礎篇、進階篇。指針及相關內容是編程語言中較難理解的部分,腳本語言稍好些,C/C++語言中會更加明顯。雖然理解指針本身并不復雜,但指針之間的組合以及指針的靈活運用卻存在不同的技巧,不同的組合能產生不同的效果,也有著不同的作用。本書力求從底層實現機制進行解析,同時配合C/C++編程技巧以及某些指針運用技巧,講解如何提高程序效能,如何避免濫用指針。

本書首先從在C語言編程的角度講解C指針,力圖使讀者學會運用C指針進行開發,并能進一步靈活將指針運用在精巧的算法上,構造更復雜的軟件系統。

接著,對C語言標準進行講述。C語言屬于高級語言,廣泛采用的有C89和C99這兩個主要標準。C89于1989年以ANSI X3.159—1989 “Programming Language C”名稱發布生效,這個版本的語言經常被稱作ANSI C,或C89;C99在C89的基礎上新增了一些特性,作為C語言官方標準的第2版,于1999年以ISO/IEC 9899:1999“Programming Language-C”名稱發布生效,并于2000年3月被ANSI采納。

最后,對編譯器的實現原理進行解讀。編譯器對C語言進行編譯,編譯后形成可執行文件,針對C/C++語言以編譯的形式執行(TCC等提供了一種解釋執行C腳本的方式,但其原理和編譯執行差不多)的情況,重點從編譯器生成的匯編中間碼對指針進行剖析。
致謝

在此,我衷心感謝機械工業出版社華章公司編輯楊福川老師和策劃編輯楊繡國老師,由于他們的魄力和遠見,讓我順利地完成了全部書稿。

謹以此書獻給熱愛C語言的朋友。

劉興

中國,湖南
內容簡介:

全書分為準備篇、基礎篇、進階篇。指針及相關內容是編程語言中較難理解的部分,腳本語言稍好些,C語言就更加明顯,雖然理解指針本身并不復雜,但指針之間的組合以及指針的靈活運用能產生各種不同的效果,也有著不同的作用。本書力求從底層實現機制進行解析,同時配合C編程技巧以及某些指針運用技巧,講解如何提高程序效能,如何避免濫用指針。

準備篇介紹C指針概述、Ubuntu及開發環境配置、AT&T匯編簡介、C程序運行機制;基礎篇對AT&T匯編、C指針基礎以及高級C指針實現機制進行講解;進階篇講解C編程技巧、C指針高級應用、解釋語言指針原理、垃圾回收以及多進程多線程和網絡編程等高級C指針應用主題。



C指針本質及其實現機制非常重要,為了讓編程者更好地掌握這把“雙刃劍”,本書從指針基礎講解入手,由淺入深,最后分析了匯編及底層語言,全面剖析了C指針。本書適合作為對C指針感興趣的程序員、架構師和算法工程師的參考書。

本書主要內容:

? C開發環境搭建

? C語言基礎

? AT&T匯編

? C指針基礎

? C開發基礎:編譯與調試C程序、GLib函數庫、內存管理和Ncurses庫

? 遞歸、字符串操作、加法溢出、預定義宏及混合編程等C開發技巧

? 多進程、多線程基礎

? C網絡基礎
目錄:

第一篇 準備篇
第1章 C語言概述 2
1.1 C語言的起源與發展 2
1.2 C語言特性 3
1.3 開發環境搭建 4
1.3.1 Windows開發環境 4
1.3.2 UNIX/Linux開發環境 13
1.3.3 隨書網盤的開發環境 33
1.4 hello,world 38
1.5 小結 43
第2章 C語言快速入門 44
2.1 C語言的語法特點 44
2.2 猜數字游戲 45
2.2.1 編寫輸入數字的C代碼 46
2.2.2 限制輸入數字的范圍 46
2.2.3 引入循環機制,允許重新輸入 48
2.2.4 產生1∼500以內的隨機整數 50
2.2.5 反復接收玩家輸入,直到猜中數字為止 52
2.2.6 自動猜數算法 54
2.3 小結 57
第3章 AT&T匯編概述 58
3.1 AT&T匯編基礎 58
3.1.1 IA-32指令 58
3.1.2 匯編的作用 59
3.1.3 AT&T匯編語言的特點 59
3.1.4 第一個AT&T匯編 61
3.2 程序運行機制 64
3.3 小結 65
第二篇 基礎篇
第4章 指針基礎 68
4.1 C指針概述 68
4.2 C指針基礎 69
4.2.1 指向標量的C指針 69
4.2.2 指向數組的C指針 73
4.2.3 指針數組 75
4.2.4 函數參數中使用指針 82
4.2.5 常量指針 85
4.2.6 函數指針 88
4.2.7 文件指針 91
4.3 小結 98
第5章 C開發基礎 99
5.1 編譯與調試C程序 99
5.1.1 GCC與GDB 99
5.1.2 make工具與makefile 104
5.2 GLib函數庫 107
5.2.1 GLib簡述 107
5.2.2 GLib基礎 110
5.2.3 GLib數據類型及標準宏 118
5.3 內存管理 120
5.3.1 glibc的內存管理 120
5.3.2 內存分配機制 121
5.3.3 內存回收 125
5.4 Ncurses庫 137
5.4.1 Ncurses簡述 137
5.4.2 Ncurses基礎 137
5.4.3 Ncurses實例:文字編輯器 154
5.5 小結 181
第三篇 進階篇
第6章 C開發技巧集錦 184
6.1 遞歸 184
6.1.1 遞歸概述 184
6.1.2 斐波那契數列 184
6.1.3 brainfuck解釋器 186
6.2 字符串操作  196
6.2.1 復制并截斷字符串 196
6.2.2 字符串拼接 197
6.2.3 在內存中復制字符串 197
6.2.4 目錄的尾部位置 197
6.2.5 查找文件擴展名 198
6.3 加法溢出 198
6.3.1 溢出原理 198
6.3.2 溢出應用 199
6.4 編譯信息的預定義宏 200
6.4.1 __FILE__與__LINE__ 201
6.4.2 #line與#error 201
6.5 C與匯編語言混合編程 202
6.5.1 寄存器 203
6.5.2 變量存儲分配 204
6.5.3 匯編指令概述 205
6.5.4 C編譯執行原理 207
6.5.5 匯編調用C庫函數 209
6.5.6 C內聯匯編 210
6.6 小結 216
第7章 C并行與網絡基礎 217
7.1 多進程、多線程基礎 217
7.1.1 多進程編程 218
7.1.2 多線程委托模型 220
7.1.3 分離線程 222
7.1.4 取消線程 224
7.1.5 多線程競爭域 230
7.1.6 線程互斥對象 232
7.1.7 線程專有數據 239
7.1.8 消息隊列 241
7.2 C網絡基礎 245
7.2.1 TCP基礎 245
7.2.2 TCP編程基礎 245
7.2.3 TCP編程示例 248
7.3 小結 254
序: