注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)征服C指針(第2版)

征服C指針(第2版)

征服C指針(第2版)

定 價(jià):¥99.00

作 者: [日] 前橋和彌 著,朱文佳 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787115554895 出版時(shí)間: 2021-03-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 333 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書以C語(yǔ)言中的重難點(diǎn)“指針”為主題,提供了程序員所需的深入而完整的指針知識(shí)。作者結(jié)合多年的編程經(jīng)驗(yàn)和感悟,從C指針的概念講起,通過(guò)實(shí)驗(yàn)一步一步地揭示了指針和數(shù)組、內(nèi)存、數(shù)據(jù)結(jié)構(gòu)的關(guān)系,展現(xiàn)了指針的常見用法,揭示了各種使用技巧,還通過(guò)獨(dú)特的方式告訴讀者怎樣解讀C語(yǔ)言那些讓人“糾結(jié)”的聲明語(yǔ)法,以及如何繞過(guò)C指針的陷阱等。第2版基于64位操作系統(tǒng)對(duì)內(nèi)容進(jìn)行了大幅修訂,新增了對(duì)ISO-C99、C11標(biāo)準(zhǔn)下相關(guān)內(nèi)容的介紹等。本書非常適合C語(yǔ)言中級(jí)學(xué)習(xí)者閱讀,也可作為計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)C語(yǔ)言的參考。

作者簡(jiǎn)介

  前橋和彌(作者)1969年出生,著有《自制編程語(yǔ)言》《徹底掌握C語(yǔ)言》《Java之謎和陷阱》等,其一針見血的“毒舌”文風(fēng)和對(duì)編程語(yǔ)言深刻的見地受到廣大讀者的歡迎。朱文佳(譯者)2005年畢業(yè)于上海大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,在對(duì)日通信行業(yè)從事開發(fā)及管理十余年,具有豐富的嵌入式C語(yǔ)言開發(fā)及項(xiàng)目管理經(jīng)驗(yàn)。愛好閱讀,自學(xué)日語(yǔ),愿盡自己綿薄之力為大家分享優(yōu)秀的外國(guó)圖書。

圖書目錄

第0章
本書目標(biāo)與讀者對(duì)象 1
0-1 本書目標(biāo) 2
0-2 讀者對(duì)象與內(nèi)容結(jié)構(gòu) 5
第 1章
打好基礎(chǔ)——預(yù)備知識(shí)和復(fù)習(xí) 9
1-1 C語(yǔ)言是什么樣的語(yǔ)言 10
1-1-1 C語(yǔ)言的發(fā)展歷程 10
是匯編語(yǔ)言還是匯編器 11
B語(yǔ)言是什么樣的語(yǔ)言 12
1-1-2 不完備和不統(tǒng)一的語(yǔ)法 13
1-1-3 C語(yǔ)言“圣經(jīng)”——K&R 13
1-1-4 ANSI C之前的C語(yǔ)言 14
1-1-5 ANSI C(C89/90) 16
1-1-6 C95 16
1-1-7 C99 17
1-1-8 C11 18
1-1-9 C語(yǔ)言的理念 19
1-1-10 C語(yǔ)言的主體 20
1-1-11 C語(yǔ)言曾是只能使用標(biāo)量的語(yǔ)言 21
1-2 內(nèi)存和地址 23
1-2-1 內(nèi)存和地址 23
1-2-2 內(nèi)存和變量 25
size_t類型 27
1-2-3 內(nèi)存和程序運(yùn)行 27
1-3 關(guān)于指針 29
1-3-1 惡名昭著的指針究竟是什么 29
1-3-2 和指針的第 一次親密接觸 30
1-3-3 地址運(yùn)算符、間接運(yùn)算符、下標(biāo)運(yùn)算符 34
關(guān)于本書中的地址值——16進(jìn)制表示法 35
混亂的聲明——如何自然地理解聲明 35
雜談:hoge是什么 37
1-3-4 指針和地址之間的微妙關(guān)系 38
在運(yùn)行時(shí)既沒有類型信息,也沒有變量名 40
1-3-5 指針運(yùn)算 41
1-3-6 何謂空指針 42
NULL和0和'\\0' 43
1-3-7 實(shí)踐——從函數(shù)返回多個(gè)值 46
形參與實(shí)參 50
1-4 關(guān)于數(shù)組 51
1-4-1 使用數(shù)組 51
C語(yǔ)言的數(shù)組是從0開始的 53
1-4-2 數(shù)組與指針的微妙關(guān)系 54
1-4-3 下標(biāo)運(yùn)算符[]與數(shù)組毫無(wú)關(guān)系 56
語(yǔ)法糖 59
1-4-4 為何存在指針運(yùn)算這種奇怪功能 59
1-4-5 別再濫用指針運(yùn)算了 61
更改參數(shù)的做法可取嗎 62
1-4-6 試圖將數(shù)組作為函數(shù)參數(shù)傳遞 63
如果對(duì)數(shù)組進(jìn)行值傳遞 65
1-4-7 聲明函數(shù)形參的方法 66
C語(yǔ)言為什么不進(jìn)行數(shù)組邊界檢查 67
1-4-8 C99中的可變長(zhǎng)數(shù)組 68
第 2章
做個(gè)實(shí)驗(yàn)——C語(yǔ)言是怎樣使用內(nèi)存的 71
2-1 虛擬地址 72
關(guān)于scanf() 75
未定義、未指定、實(shí)現(xiàn)定義 77
2-2 C語(yǔ)言中內(nèi)存的使用方法 78
2-2-1 C語(yǔ)言中變量的種類 78
2-2-2 嘗試輸出地址 80
存儲(chǔ)類說(shuō)明符 80
2-3 函數(shù)與字符串字面量 85
2-3-1 只讀內(nèi)存區(qū)域 85
2-3-2 指向函數(shù)的指針 86
2-4 靜態(tài)變量 88
2-4-1 什么是靜態(tài)變量 88
2-4-2 分割編譯與鏈接 88
2-5 自動(dòng)變量(棧) 91
2-5-1 內(nèi)存空間的“重復(fù)使用” 91
2-5-2 函數(shù)調(diào)用究竟發(fā)生了什么 91
調(diào)用約定 95
2-5-3 自動(dòng)變量的引用 95
一旦函數(shù)執(zhí)行結(jié)束,自動(dòng)變量的內(nèi)存空間就會(huì)被釋放 98
2-5-4 典型的安全漏洞——緩沖區(qū)溢出漏洞 99
操作系統(tǒng)針對(duì)緩沖區(qū)溢出漏洞給出的對(duì)策 102
2-5-5 可變長(zhǎng)參數(shù) 103
assert() 106
試寫一個(gè)用于調(diào)試的函數(shù) 107
2-5-6 遞歸調(diào)用 110
2-5-7 C99中的可變長(zhǎng)數(shù)組(VLA)的?!?13
2-6 利用malloc()動(dòng)態(tài)分配內(nèi)存(堆) 116
2-6-1 malloc()的基礎(chǔ)知識(shí) 116
應(yīng)該強(qiáng)制轉(zhuǎn)換malloc()的返回值類型嗎 119
2-6-2 malloc()是系統(tǒng)調(diào)用嗎 119
2-6-3 malloc()中發(fā)生了什么 120
2-6-4 free()之后相應(yīng)的內(nèi)存空間會(huì)怎樣 122
Valgrind 124
2-6-5 碎片化 124
2-6-6 malloc()以外的動(dòng)態(tài)內(nèi)存分配函數(shù) 125
假如malloc()參數(shù)為0 127
malloc()的返回值檢查 128
程序結(jié)束時(shí)也必須調(diào)用free()嗎 129
2-7 對(duì)齊 131
結(jié)構(gòu)體的成員名稱在運(yùn)行時(shí)也是缺失的 134
2-8 字節(jié)序 135
2-9 關(guān)于語(yǔ)言規(guī)范和實(shí)現(xiàn)——抱歉,前面的內(nèi)容都是騙你的 137
第3章
語(yǔ)法揭秘——它到底是怎么回事 139
3-1 解讀C語(yǔ)言聲明 140
3-1-1 用英語(yǔ)閱讀 140
3-1-2 解讀C語(yǔ)言聲明 141
近來(lái)的語(yǔ)言多數(shù)是將類型后置的 144
3-1-3 類型名 145
如果把間接運(yùn)算符*后置 146
3-2 C語(yǔ)言數(shù)據(jù)類型的模型 147
3-2-1 基本類型和派生類型 147
3-2-2 指針類型的派生 148
3-2-3 數(shù)組類型的派生 150
3-2-4 什么是指向數(shù)組的指針 150
3-2-5 C語(yǔ)言中不存在多維數(shù)組 152
3-2-6 函數(shù)類型的派生 154
3-2-7 計(jì)算類型的長(zhǎng)度 155
3-2-8 基本類型 157
3-2-9 結(jié)構(gòu)體和聯(lián)合體 159
3-2-10 不完全類型 159
3-3 表達(dá)式 162
3-3-1 表達(dá)式和數(shù)據(jù)類型 162
對(duì)“表達(dá)式”使用sizeof 164
3-3-2 什么是左值——變量的兩張面孔 166
“左值”的由來(lái) 167
3-3-3 數(shù)組→指針的轉(zhuǎn)換 168
3-3-4 與數(shù)組和指針相關(guān)的運(yùn)算符 169
3-3-5 多維數(shù)組 171
運(yùn)算符的優(yōu)先級(jí) 173
3-4 解讀C語(yǔ)言聲明(續(xù)) 176
3-4-1 const修飾符 176
3-4-2 如何使用const?可以用到哪種程度 178
const可以代替#define嗎 181
3-4-3 typedef 181
3-5 其他 185
3-5-1 函數(shù)形參的聲明(ANSI C版) 185
K&R中關(guān)于函數(shù)形參聲明的說(shuō)明 186
3-5-2 函數(shù)形參的聲明(C99版) 188
3-5-3 關(guān)于空的下標(biāo)運(yùn)算符[] 189
定義與聲明 191
3-5-4 字符串字面量 192
字符串字面量是char的數(shù)組 194
3-5-5 關(guān)于指向函數(shù)的指針引發(fā)的混亂 195
3-5-6 強(qiáng)制類型轉(zhuǎn)換 196
3-5-7 練習(xí)——解讀復(fù)雜聲明 198
3-6 請(qǐng)記?。簲?shù)組與指針截然不同 203
3-6-1 你為什么感到混亂 203
3-6-2 在表達(dá)式中 204
3-6-3 在聲明中 206
第4章
數(shù)組和指針的常見用法 209
4-1 基本用法 210
4-1-1 通過(guò)返回值以外的方法返回 210
4-1-2 將數(shù)組作為函數(shù)的參數(shù)傳遞 211
4-1-3 動(dòng)態(tài)數(shù)組——通過(guò)malloc()分配的可變長(zhǎng)數(shù)組 212
其他語(yǔ)言的數(shù)組 214
4-2 組合使用 216
4-2-1 動(dòng)態(tài)數(shù)組的數(shù)組 216
寬字符 223
4-2-2 動(dòng)態(tài)數(shù)組的動(dòng)態(tài)數(shù)組 225
4-2-3 命令行參數(shù) 228
4-2-4 通過(guò)參數(shù)返回指針 230
什么是“雙指針” 235
4-2-5 將多維數(shù)組作為函數(shù)的參數(shù)傳遞 236
4-2-6 將多維數(shù)組作為函數(shù)的參數(shù)傳遞(VLA版) 237
4-2-7 通過(guò)malloc()分配縱橫可變的二維數(shù)組(C99) 239
C語(yǔ)言中的多維數(shù)組是行優(yōu)先的 240
縱橫可變的二維數(shù)組的ANSI C實(shí)現(xiàn) 241
Java和C#的多維數(shù)組 242
4-2-8 數(shù)組的動(dòng)態(tài)數(shù)組 243
4-2-9 在考慮可變之前,不妨考慮使用結(jié)構(gòu)體 244
4-2-10 可變長(zhǎng)結(jié)構(gòu)體(ANSI C版) 246
關(guān)于分配可變長(zhǎng)結(jié)構(gòu)體時(shí)的長(zhǎng)度指定 248
4-2-11 柔性數(shù)組成員(C99) 248
指針可以指向數(shù)組的最后一個(gè)元素的下一個(gè)元素 249
第5章
數(shù)據(jù)結(jié)構(gòu)——指針的真正用法 251
5-1 案例學(xué)習(xí)1:計(jì)算單詞的使用頻率 252
5-1-1 案例的需求 252
各種語(yǔ)言中指針的叫法 253
引用傳遞 253
5-1-2 設(shè)計(jì) 256
關(guān)于頭文件的寫法 259
5-1-3 數(shù)組版 261
5-1-4 鏈表版 265
頭文件的公有和私有 271
當(dāng)需要同時(shí)處理多個(gè)數(shù)據(jù)時(shí) 272
迭代器 273
5-1-5 添加查找功能 275
翻倍游戲 277
5-1-6 其他數(shù)據(jù)結(jié)構(gòu) 277
5-2 案例學(xué)習(xí)2:繪圖工具的數(shù)據(jù)結(jié)構(gòu) 283
5-2-1 案例的需求 283
5-2-2 表示各種圖形 284
關(guān)于坐標(biāo)系 285
5-2-3 Shape類型 286
5-2-4 討論——還有其他方法嗎 289
能保存任何類型的鏈表 293
5-2-5 圖形的組合 294
5-2-6 通過(guò)指向函數(shù)的指針的數(shù)組分配處理 300
5-2-7 通往繼承與多態(tài)之路 302
將draw()放入Shape中真的好嗎 302
5-2-8 指針的可怕之處 304
5-2-9 那么,指針到底是什么呢 305
第6章
其他——拾遺 307
6-1 新的函數(shù)組 308
6-1-1 添加了范圍檢查的函數(shù)(C11) 308
restrict關(guān)鍵字 310
6-1-2 無(wú)須使用靜態(tài)存儲(chǔ)空間的函數(shù)(C11) 311
6-2 陷阱 314
6-2-1 整數(shù)提升 314
6-2-2 如果在(老式的)C語(yǔ)言中使用float類型的參數(shù) 316
6-2-3 printf()與scanf() 318
6-2-4 原型聲明的光與影 319
6-3 慣用寫法 321
6-3-1 結(jié)構(gòu)體聲明 321
6-3-2 自引用結(jié)構(gòu)體 322
6-3-3 結(jié)構(gòu)體的相互引用 323
6-3-4 結(jié)構(gòu)體的嵌套 324
6-3-5 聯(lián)合體 325
6-3-6 無(wú)名結(jié)構(gòu)體和無(wú)名聯(lián)合體(C11) 326
6-3-7 數(shù)組的初始化 327
6-3-8 指向char的指針的數(shù)組的初始化 328
6-3-9 結(jié)構(gòu)體的初始化 329
6-3-10 聯(lián)合體的初始化 330
6-3-11 指定初始化(C99) 331
6-3-12 復(fù)合字面量(C99) 332
參考文獻(xiàn) 334

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)