定 價(jià):¥217.00
作 者: | (美)肯尼斯·里科,(美),彼得·范德林登,(美)安德魯·凱尼格 |
出版社: | 人民郵電出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787115005380 | 出版時(shí)間: | 2020-11-01 | 包裝: | |
開本: | 16開 | 頁數(shù): | 891 | 字?jǐn)?shù): |
《C和指針》
第1章快速上手 1
1.1 簡介 1
1.2 補(bǔ)充說明 14
1.3 編譯 14
1.4 總結(jié) 15
1.5 警告的總結(jié) 15
1.6 編程提示的總結(jié) 15
1.7 問題 16
1.8 編程練習(xí) 16
第 2章基本概念 19
2.1 環(huán)境 19
2.2 詞法規(guī)則 21
2.3 程序風(fēng)格 25
2.4 總結(jié) 26
2.5 警告的總結(jié) 26
2.6 編程提示的總結(jié) 26
2.7 問題 27
2.8 編程練習(xí) 28
第3章 數(shù)據(jù) 29
3.1 基本數(shù)據(jù)類型 29
3.2 基本聲明 35
3.3 typedef 38
3.4 常量 38
3.5 作用域 39
3.6 鏈接屬性 41
3.7 存儲類型 43
3.8 static關(guān)鍵字 44
3.9 作用域、存儲類型示例 45
3.10 總結(jié) 46
3.11 警告的總結(jié) 47
3.12 編程提示的總結(jié) 47
3.13 問題 48
第4章 語句 51
4.1 空語句 51
4.2 表達(dá)式語句 51
4.3 代碼塊 52
4.4 if語句 52
4.5 while語句 53
4.6 for語句 55
4.7 do語句 56
4.8 switch語句 57
4.9 goto語句 60
4.10 總結(jié) 61
4.11 警告的總結(jié) 62
4.12 編程提示的總結(jié) 62
4.13 問題 62
4.14 編程練習(xí) 63
第5章 操作符和表達(dá)式 67
5.1 操作符 67
5.2 布爾值 78
5.3 左值和右值 79
5.4 表達(dá)式求值 80
5.5 總結(jié) 85
5.6 警告的總結(jié) 86
5.7 編程提示的總結(jié) 86
5.8 問題 86
5.9 編程練習(xí) 88
第6章 指針 91
6.1 內(nèi)存和地址 91
6.2 值和類型 92
6.3 指針變量的內(nèi)容 93
6.4 間接訪問操作符 94
6.5 未初始化和非法的指針 95
6.6 NULL指針 96
6.7 指針、間接訪問和左值 97
6.8 指針、間接訪問和變量 97
6.9 指針常量 98
6.10 指針的指針 98
6.11 指針表達(dá)式 99
6.12 實(shí)例 104
6.13 指針運(yùn)算 107
6.14 總結(jié) 111
6.15 警告的總結(jié) 112
6.16 編程提示的總結(jié) 112
6.17 問題 112
6.18 編程練習(xí) 115
第7章 函數(shù) 117
7.1 函數(shù)定義 117
7.2 函數(shù)聲明 119
7.3 函數(shù)的參數(shù) 122
7.4 ADT和黑盒 124
7.5 遞歸 127
7.6 可變參數(shù)列表 134
7.7 總結(jié) 136
7.8 警告的總結(jié) 137
7.9 編程提示的總結(jié) 137
7.10 問題 138
7.11 編程練習(xí) 138
第8章 數(shù)組 141
8.1 一維數(shù)組 141
8.2 多維數(shù)組 154
8.3 指針數(shù)組 162
8.4 總結(jié) 165
8.5 警告的總結(jié) 166
8.6 編程提示的總結(jié) 166
8.7 問題 166
8.8 編程練習(xí) 170
第9章 字符串、字符和字節(jié) 175
9.1 字符串基礎(chǔ) 175
9.2 字符串長度 175
9.3 不受限制的字符串函數(shù) 177
9.4 長度受限的字符串函數(shù) 179
9.5 字符串查找基礎(chǔ) 180
9.6 高級字符串查找 182
9.7 錯誤信息 183
9.8 字符操作 184
9.9 內(nèi)存操作 185
9.10 總結(jié) 186
9.11 警告的總結(jié) 187
9.12 編程提示的總結(jié) 187
9.13 問題 187
9.14 編程練習(xí) 188
第 10章結(jié)構(gòu)和聯(lián)合 195
第 11章動態(tài)內(nèi)存分配 221
第 12章使用結(jié)構(gòu)和指針 235
第 13章高級指針話題 257
第 14章預(yù)處理器 279
第 15章輸入/輸出函數(shù) 297
第 16章標(biāo)準(zhǔn)函數(shù)庫 327
第 17章經(jīng)典抽象數(shù)據(jù)類型 355
第 18章運(yùn)行時(shí)環(huán)境 387
附錄 部分問題和編程練習(xí)的答案 405
《C專家編程》
第1章C:穿越時(shí)空的迷霧 1
1.1 C語言的史前階段 1
1.2 C語言的早期體驗(yàn) 4
1.3 標(biāo)準(zhǔn)I/O庫和C預(yù)處理器 5
1.4 K&RC 8
1.5 今日之ANSIC 10
1.6 它很棒,但它符合標(biāo)準(zhǔn)嗎 12
1.7 編譯限制 14
1.8 ANSIC標(biāo)準(zhǔn)的結(jié)構(gòu) 15
1.9 閱讀ANSIC標(biāo)準(zhǔn),尋找樂趣和裨益 18
1.10 “安靜的改變”究竟有多少安靜 22
1.11 輕松一下——由編譯器定義的Pragmas效果 25
第 2章這不是Bug,而是語言特性 27
2.1 這關(guān)語言特性何事,在Fortran里這就是Bug呀 27
2.2 多做之過 29
2.3 誤做之過 36
2.4 少做之過 43
2.5 輕松一下——有些特性確實(shí)就是Bug 51
第3章 分析C語言的聲明 53
3.1 只有編譯器才會喜歡的語法 54
3.2 聲明是如何形成的 56
3.3 優(yōu)先級規(guī)則 61
3.4 通過圖表分析C語言的聲明 63
3.5 typedef可以成為你的朋友 65
3.6 typedefintx[10]和#definexint[10]的區(qū)別 66
3.7 typedefstructfoo{...foo;}的含義 67
3.8 理解所有分析過程的代碼段 69
3.9 輕松一下——驅(qū)動物理實(shí)體的軟件 71
第4章 令人震驚的事實(shí):數(shù)組和指針并不相同 79
4.1 數(shù)組并非指針 79
4.2 我的代碼為什么無法運(yùn)行 79
4.3 什么是聲明,什么是定義 80
4.4 使聲明與定義相匹配 84
4.5 數(shù)組和指針的其他區(qū)別 84
4.6 輕松一下——回文的樂趣 85
第5章 對鏈接的思考 89
5.1 函數(shù)庫、鏈接和載入 89
5.2 動態(tài)鏈接的優(yōu)點(diǎn) 92
5.3 函數(shù)庫鏈接的5個特殊秘密 95
5.4 警惕Interpositioning 99
5.5 產(chǎn)生鏈接器報(bào)告文件 104
5.6 輕松一下——看看誰在說話:挑戰(zhàn)Turing測驗(yàn) 105
第6章 運(yùn)動的詩章:運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu) 111
6.1 a.out及其傳說 112
6.2 段 113
6.3 操作系統(tǒng)在a.out文件里干了些什么 115
6.4 C語言運(yùn)行時(shí)系統(tǒng)在a.out里干了些什么 117
6.5 當(dāng)函數(shù)被調(diào)用時(shí)發(fā)生了什么:過程活動記錄 119
6.6 auto和static關(guān)鍵字 123
6.7 控制線程 124
6.8 setjmp和longjmp 124
6.9 UNIX中的堆棧段 126
6.10 MS-DOS中的堆棧段 126
6.11 有用的C語言工具 127
6.12 輕松一下——卡耐基·梅隆大學(xué)的編程難題 130
6.13 只適用于高級學(xué)員閱讀的材料 132
第7章 對內(nèi)存的思考 133
7.1 Intel80x86系列 133
7.2 Intel80x86內(nèi)存模型以及它的工作原理 137
7.3 虛擬內(nèi)存 141
7.4 cache存儲器 144
7.6 內(nèi)存泄漏 149
7.7 總線錯誤 153
7.8 輕松一下——“ThingKing”和“頁面游戲” 159
第8章 為什么程序員無法分清萬圣節(jié)和圣誕節(jié) 163
8.1 Portzebie度量衡系統(tǒng) 163
8.2 根據(jù)位模式構(gòu)筑圖形 164
8.3 在等待時(shí)類型發(fā)生了變化 166
8.4 原型之痛 168
8.5 原型在什么地方會失敗 170
8.6 不需要按回車鍵就能得到一個字符 173
8.7 用C語言實(shí)現(xiàn)有限狀態(tài)機(jī) 177
8.8 軟件比硬件更困難 178
8.9 如何進(jìn)行強(qiáng)制類型轉(zhuǎn)換,為何要進(jìn)行類型強(qiáng)制轉(zhuǎn)換 181
8.10 輕松一下——國際C語言混亂代碼大賽 183
第9章 再論數(shù)組 193
9.1 什么時(shí)候數(shù)組與指針相同 193
9.2 為什么會發(fā)生混淆 194
9.3 為什么C語言把數(shù)組形參當(dāng)作指針 199
9.4 數(shù)組片段的下標(biāo) 202
9.5 數(shù)組和指針可交換性的總結(jié) 203
9.6 C語言的多維數(shù)組 203
9.7 輕松一下——軟件/硬件平衡 209
第 10章再論指針 213
第 11章你懂得C,所以C++不在話下 235
附錄A 程序員工作面試的秘密 265
《C陷阱與缺陷》
第0章導(dǎo)讀 1
第 1章詞法“陷阱” 5
1.1 =不同于== 6
1.2 &和|不同于&&和|| 8
1.3 詞法分析中的“貪心法” 8
1.4 整型常量 10
1.5 字符與字符串 11
第 2章語法“陷阱” 15
2.1 理解函數(shù)聲明 15
2.2 運(yùn)算符的優(yōu)先級問題 19
2.3 注意作為語句結(jié)束標(biāo)志的分號 24
2.4 switch語句 26
2.5 函數(shù)調(diào)用 28
2.6 “懸掛”else引發(fā)的問題 28
第3章 語義“陷阱” 33
3.1 指針與數(shù)組 33
3.2 非數(shù)組的指針 39
3.3 作為參數(shù)的數(shù)組聲明 41
3.4 避免“舉隅法” 43
3.5 空指針并非空字符串 44
3.6 邊界計(jì)算與不對稱邊界 45
3.7 求值順序 57
3.8 運(yùn)算符&&、||和! 59
3.9 整數(shù)溢出 61
3.10 為函數(shù)main提供返回值 62
第4章 鏈接 65
4.1 什么是鏈接器 65
4.2 聲明與定義 67
4.3 命名沖突與static修飾符 69
4.4 形參、實(shí)參與返回值 70
4.5 檢查外部類型 77
4.6 頭文件 80
第5章 庫函數(shù) 83
5.1 返回整數(shù)的getchar函數(shù) 84
5.2 更新順序文件 85
5.3 緩沖輸出與內(nèi)存分配 86
5.4 使用errno檢測錯誤 88
5.5 庫函數(shù)signal 89
第6章 預(yù)處理器 93
6.1 不能忽視宏定義中的空格 94
6.2 宏并不是函數(shù) 94
6.3 宏并不是語句 99
6.4 宏并不是類型定義 101
第7章 可移植性缺陷 103
7.1 應(yīng)對C語言標(biāo)準(zhǔn)變更 104
7.2 標(biāo)識符名稱的限制 106
7.3 整數(shù)的大小 107
7.4 字符是有符號整數(shù)還是無符號整數(shù) 108
7.5 移位運(yùn)算符 109
7.6 內(nèi)存位置0 110
7.7 除法運(yùn)算時(shí)發(fā)生的截?cái)唷?11
7.8 隨機(jī)數(shù)的大小 113
7.9 大小寫轉(zhuǎn)換 113
7.10 首先釋放,然后重新分配 115
7.11 可移植性問題的一個例子 116
第8章 建議與答案 123
8.1 建議 124
8.2 答案 128
附錄A printf、varargs與stdarg 147
附錄B Koenig和Moo夫婦訪談 169