內容簡介
本書從介紹內存和實時內存概念開始,然後講述瞭指針變量的概念和它重要的操作(引用和解引用)、指針運算和一維數組、使用指針處理字符串、指針訪問多維數組的用法、使用指針訪問結構體與成員字段、函數指針概念的用法,以及文件I/O處理等知識。
作者簡介
Naveen Toppo,目前擔任西門子(印度)技術服務公司的CT直流技術部顧問。他擁有長達7年的工作經驗,目前研究領域是硬件特性的佳利用(性能工程)。 他還參與瞭研究分布式算法在空間數據庫方麵的應用。加入西門子之前,他是Wipro Technologies公司嵌入式係統技術主管,負責開發一個用於處理L3層的路由算法的SoC網絡處理器。 此前他也參與瞭基於Android平颱的英特爾平闆電腦項目,以及T9詞典的功能升級,語法與詞匯分析等開發項目。他畢業於印度理工學院古瓦哈提校區計算機科學專業,並獲得碩士學位。
Hrishikesh Dewan,自2008年6月一直擔任西門子(印度)技術服務公司首席工程師。他畢業於位於班加羅爾的印度理工學院(IISC)計算機科學與自動化係,並獲得博士學位,目前主要從事大規模分布式存儲係統方麵的研究。在西門子,他負責分布式係統實驗室。加入STS之前,他創立瞭一個非常小的開放源碼軟件開發組織—Srishti,用來促進高等院校開源工具和軟件的發展。他還在Eth公司(Dishnet無綫公司(Aircel)的一個附屬的研發部門)擔任兩年多的項目經理。他曾齣版過兩本有關WCF-SOAP和Visual Studio技術的書。
目錄
譯 者 序
作者簡介
前 言
緻 謝
第1章 內存、實時內存管理和虛擬內存 1
1.1 內存與類型 2
1.1.1 類型 2
1.1.2 內存排列 4
1.2 數據與指令 5
1.2.1 處理器如何訪問主存 6
1.2.2 緩存 6
1.3 編譯過程鏈 8
1.3.1 預處理 9
1.3.2 編譯 10
1.3.3 匯編器 12
1.3.4 鏈接 12
1.3.5 加載器 13
1.4 內存模型 14
1.4.1 實地址內存模型 16
1.4.2 實地址模式下的地址轉換 16
1.4.3 扁平內存模型 16
1.4.4 分段內存模型 17
1.5 使用分段的內存排列 18
1.5.1 分段 18
1.5.2 代碼段 18
1.5.3 數據段 19
1.5.4 未初始化/BSS段 19
1.5.5 棧段 20
1.5.6 堆段 20
1.6 實時內存組織 21
1.6.1 函數調用的復雜性 21
1.6.2 函數調用步驟 22
1.7 內存段 24
1.8 虛擬內存組織 26
1.8.1 一窺虛擬內存係統 26
1.8.2 分頁 29
1.8.3 頁錶 29
1.9 小結 30
第2章 指針基礎 31
2.1 變量的地址 32
2.2 地址操作符 33
2.3 指針聲明 34
2.4 指針賦值 35
2.5 指針變量大小 36
2.6 指針解引用 38
2.7 指針的基本用法 39
2.7.1 傳值 40
2.7.2 引用傳遞 40
2.8 指針和常量 42
2.8.1 常量指針變量 42
2.8.2 常量指針 43
2.8.3 指針常量 44
2.9 多級指針 45
2.10 理解神秘的指針錶達式 46
2.10.1 一級指針引用 47
2.10.2 一級指針解引用 47
2.10.3 二級指針引用 48
2.10.4 二級指針解引用 48
2.11 小結 50
第3章 指針運算與一維數組 51
3.1 數組內存排列 52
3.2 指針運算 55
3.2.1 指針加法 56
3.2.2 指針減法 58
3.3 數組探究 60
3.3.1 動態數組 62
3.3.2 指針數組 64
3.3.3 數組指針 66
3.4 小結 67
第4章 指針與字符串 69
4.1 內存中的字符串排列 70
4.2 動態內存分配 72
4.3 字符串操作 75
4.3.1 處理字符串輸入 75
4.3.2 字符串遍曆 75
4.3.3 字符串復製 77
4.3.4 字符串連接 77
4.4 字符串數組 78
4.5 小結 84
第5章 指針與多維數組 85
5.1 數組排列 86
5.1.1 二維數組指針 87
5.1.2 三維數組排列 94
5.2 小結 104
第6章 結構體指針 105
6.1 定義結構體 106
6.2 聲明結構體變量 107
6.3 訪問結構體成員 107
6.4 初始化結構體變量 108
6.4.1 方法1 108
6.4.2 方法2 108
6.5 結構體嵌套 108
6.6 結構體存儲 109
6.7 結構體填充 111
6.7.1 數據對齊 111
6.7.2 字段填充 112
6.8 當結構體填充派不上用場時 115
6.9 結構體封裝 118
6.10 結構體賦值與復製 120
6.11 結構體指針 122
6.11.1 訪問成員變量 122
6.11.2 傳遞結構體指針變量 124
6.12 常見錯誤 125
6.13 結構體指針類型轉換 126
6.14 自引用結構體 126
6.15 數據結構與算法 127
6.15.1 鏈錶 127
6.15.2 二叉搜索樹 129
6.15.3 遍曆節點 131
6.16 小結 131
第7章 函數指針 133
7.1 定義函數指針 134
7.2 初始化函數指針 135
7.3 使用函數指針 135
7.4 函數指針調用的匯編細節 137
7.4.1 直接調用函數 138
7.4.2 利用函數指針間接調用函數 138
7.5 函數指針數組 139
7.6 從函數中返迴函數指針 140
7.6.1 復雜方法 140
7.6.2 簡單方法 141
7.7 Linux內核裏的函數指針用法 142
7.8 神秘的函數指針聲明總結 144
7.9 小結 145
第8章 文件I/O指針 147
8.1 輔存的物理排列 148
8.1.1 盤麵圖 148
8.1.2 硬盤驅動器與CPU的接口 149
8.1.3 硬盤尋址方案 150
8.2 文件係統結構簡介 150
8.2.1 邏輯文件係統 150
8.2.2 基本文件係統 152
8.3 創建一個文件係統需要什麼 152
8.3.1 硬盤數據結構體 152
8.3.2 內存數據結構體 152
8.4 訪問文件 153
8.5 首要任務 154
8.6 次要任務 155
8.7 從文件讀取 156
8.7.1 從文件中讀取單個字符 156
8.7.2 從文件中讀取字符串 158
8.7.3 從文件中讀取數據塊 159
8.7.4 從文件中格式化讀取 160
8.8 寫入文件 162
8.8.1 嚮文件寫入單個字符 162
8.8.2 嚮文件寫入字符串 163
8.8.3 嚮文件寫入數據塊 164
8.9 在任意位置訪問硬盤 165
8.10 其他函數 167
8.10.1 確定文件大小 167
8.10.2 重置文件位置的另一種方法 169
8.11 小結 170
前言/序言
前 言 自1978年C語言問世以來,它憑藉強大的功能已成為最受程序員歡迎的編程語言。C語言最初雖是為實現UNIX操作係統而設計的,可它廣泛應用於非UNIX平颱下的軟件開發。C語言一直是底層開發、設備驅動程序、嵌入式係統開發、移動設備開發等領域的首選語言。 指針是C語言最重要的特性,它非常有趣但不好理解。C作為一門較低級的語言,要求程序員對許多計算機基本概念非常熟悉。C也不是強類型語言。 指針概念的神秘性眾所周知,這使得某些情況下很難理解指針的用法。本書力求使初學者、普通程序員、專傢級程序員都能理解指針的概念。為讓讀者瞭解指針概念,我們引入背景信息,它無關語言本身,但也是計算機科學文獻的一部分。該背景信息將幫助讀者理解指針的概念。 本書的內容結構如下: 第1章是全書的基礎。該章介紹內存和實時內存概念,幫助讀者理解如何訪問內存,以及數據/指令在內存中如何存儲。該章幫助讀者理解編譯步驟,包括解釋程序預處理、匯編和目標代碼等中間結果如何生成。而且也給齣編譯器創建內存段的詳細背景。通過詳細解釋內存段利弊,可以幫助讀者理解各種變量的用法。另外該章還討論瞭虛擬內存的概念。 第2章介紹指針變量的概念和它最重要的操作(引用和解引用)。該章介紹指針變量初始化、比較及內存分配、NULL指針、懸擺指針、VOID指針和CONST修飾符等概念。該章詳細演示integer、char等基本數據類型指針的用法,也詳細介紹如何用多重指針訪問內存地址和存儲這些位置的值。 第3章詳細解釋指針運算和一維數組。該章詳細介紹指針運算。演示使用指針加減運算如何訪問各種連續內存位置。用一整節介紹用指針訪問數組類型的用法。該章也介紹各種訪問數組指定索引的方法。 第4章介紹如何使用指針初始化靜態字符串並對其進行操作。給齣瞭包括strcpy、substring等基本字符串處理函數實例。字符串操作對於解決與實現算法非常重要。 第5章介紹指針訪問多維數組的用法,特彆是二維數組和三維數組。 第6章詳細描述怎樣使用指針訪問結構體與成員字段。使用結構體和指針便於實現復雜、動態的數據結構。該章也給齣如何用指針處理鏈錶和二叉樹等數據結構的實例。該章用一整節內容專門介紹怎樣用函數指針動態調用函數。 第7章解釋函數指針概念的用法。 第8章介紹文件處理細節,並深入說明如何使用讀寫函數文件指針操作文件。 緻謝 Acknowledgements非常感謝我的父母Clement、Xaveria,我的愛妻Rashmi,我的兄弟John和Kartik,他們給予我持續支持和無盡的耐心。感謝同事Krishna先生辛勤地輸入代碼。感謝所有朋友、同事,以及我就職的西門子公司。也感謝所有鳥友。最後,我要感謝Saswata、Jeffrey、Anamika,以及技術編輯,感謝齣版社所有幫助我將這個夢想變成現實的。 最後,我要感謝我的鳥友—Tickell抯 blue flycatcher以及讓我保持充沛精力來完成本書撰寫的所有美麗的鳥兒。 —Naveen Toppo非常感謝本書的版式設計人員。特彆感謝Saswata和Jeff讓我有機會撰寫本書。 —Hrishikesh Dewan
C指針:基本概念、核心技術及最佳實踐 下載 mobi epub pdf txt 電子書