本書提供與C語言編程相關的資源和深入討論。本書通過對指針的基礎知識和高級特性的探討,幫助程序員把指針的強大功能融入到自己的程序中去。全書共18章,覆蓋了數據、語句、操作符和表達式、指針、函數、數組、字符串、結構和聯合等幾乎所有重要的C編程話題。書中給出了很多編程技巧和提示,每章后面有針對性很強的練習,附錄部分則給出了部分練習的解答。本書適合C語言初學者和初級C程序員閱讀,也可作為計算機專業學生學習C語言的參考。
《C和指針》通過對指針的基礎知識和高級特性的探討,幫助程序員把指針的強大功能融入到自己的程序中去。
全書共18章,覆蓋了數據、語句、操作符和表達式、指針、函數、數組、字符串、結構和聯合等幾乎所有重要的C編程話題。
《C和指針》適合C語言初學者和初級c程序員閱讀,也可作為計算機專業學生學習C語言的參考。
目 錄
第1章 快速上手 1
1.1 簡介 1
1.1.1 空白和注釋 4
1.1.2 預處理指令 4
1.1.3 main函數 5
1.1.4 read_column_numbers函數 8
1.1.5 rearrange函數 12
1.2 補充說明 14
1.3 編譯 14
1.4 總結 15
1.5 警告的總結 15
1.6 編程提示的總結 15
1.7 問題 16
1.8 編程練習 16
第2章 基本概念 19
2.1 環境 19
2.1.1 翻譯 19
2.1.2 執行 21
2.2 詞法規則 21
2.2.1 字符 22
2.2.2 注釋 23
2.2.3 自由形式的源代碼 23
2.2.4 標識符 24
2.2.5 程序的形式 24
2.3 程序風格 25
2.4 總結 26
2.5 警告的總結 26
2.6 編程提示的總結 26
2.7 問題 27
2.8 編程練習 28
第3章 數據 29
3.1 基本數據類型 29
3.1.1 整型家族 29
3.1.2 浮點類型 32
3.1.3 指針 33
3.2 基本聲明 35
3.2.1 初始化 35
3.2.2 聲明簡單數組 36
3.2.3 聲明指針 36
3.2.4 隱式聲明 37
3.3 typedef 38
3.4 常量 38
3.5 作用域 39
3.5.1 代碼塊作用域 40
3.5.2 文件作用域 41
3.5.3 原型作用域 41
3.5.4 函數作用域 41
3.6 鏈接屬性 41
3.7 存儲類型 43
3.8 static關鍵字 44
3.9 作用域、存儲類型示例 45
3.10 總結 46
3.11 警告的總結 47
3.12 編程提示的總結 47
3.13 問題 48
第4章 語句 51
4.1 空語句 51
4.2 表達式語句 51
4.3 代碼塊 52
4.4 if語句 52
4.5 while語句 53
4.5.1 break和continue語句 54
4.5.2 while語句的執行過程 54
4.6 for語句 55
4.7 do語句 56
4.8 switch語句 57
4.8.1 switch中的break語句 58
4.8.2 default子句 59
4.8.3 switch語句的執行過程 59
4.9 goto語句 60
4.10 總結 61
4.11 警告的總結 62
4.12 編程提示的總結 62
4.13 問題 62
4.14 編程練習 63
第5章 操作符和表達式 67
5.1 操作符 67
5.1.1 算術操作符 67
5.1.2 移位操作符 67
5.1.3 位操作符 69
5.1.4 賦值 70
5.1.5 單目操作符 72
5.1.6 關系操作符 73
5.1.7 邏輯操作符 74
5.1.8 條件操作符 75
5.1.9 逗號操作符 76
5.1.10 下標引用、函數調用和結構成員 77
5.2 布爾值 78
5.3 左值和右值 79
5.4 表達式求值 80
5.4.1 隱式類型轉換 80
5.4.2 算術轉換 80
5.4.3 操作符的屬性 81
5.4.4 優先級和求值的順序 82
5.5 總結 85
5.6 警告的總結 86
5.7 編程提示的總結 86
5.8 問題 86
5.9 編程練習 88
第6章 指針 91
6.1 內存和地址 91
6.2 值和類型 92
6.3 指針變量的內容 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 指針表達式 99
6.12 實例 104
6.13 指針運算 107
6.13.1 算術運算 108
6.13.2 關系運算 110
6.14 總結 111
6.15 警告的總結 112
6.16 編程提示的總結 112
6.17 問題 112
6.18 編程練習 115
第7章 函數 117
7.1 函數定義 117
7.2 函數聲明 119
7.2.1 原型 119
7.2.2 函數的缺省認定 121
7.3 函數的參數 122
7.4 ADT和黑盒 124
7.5 遞歸 127
7.5.1 追蹤遞歸函數 128
7.5.2 遞歸與迭代 131
7.6 可變參數列表 134
7.6.1 stdarg宏 135
7.6.2 可變參數的限制 135
7.7 總結 136
7.8 警告的總結 137
7.9 編程提示的總結 137
7.10 問題 138
7.11 編程練習 138
第8章 數組 141
8.1 一維數組 141
8.1.1 數組名 141
8.1.2 下標引用 142
8.1.3 指針與下標 144
8.1.4 指針的效率 145
8.1.5 數組和指針 150
8.1.6 作為函數參數的數組名 150
8.1.7 聲明數組參數 152
8.1.8 初始化 152
8.1.9 不完整的初始化 153
8.1.10 自動計算數組長度 153
8.1.11 字符數組的初始化 153
8.2 多維數組 154
8.2.1 存儲順序 154
8.2.2 數組名 155
8.2.3 下標 156
8.2.4 指向數組的指針 158
8.2.5 作為函數參數的多維數組 159
8.2.6 初始化 160
8.2.7 數組長度自動計算 162
8.3 指針數組 162
8.4 總結 165
8.5 警告的總結 166
8.6 編程提示的總結 166
8.7 問題 166
8.8 編程練習 170
第9章 字符串、字符和字節 175
9.1 字符串基礎 175
9.2 字符串長度 175
9.3 不受限制的字符串函數 177
9.3.1 復制字符串 177
9.3.2 連接字符串 178
9.3.3 函數的返回值 178
9.3.4 字符串比較 178
9.4 長度受限的字符串函數 179
9.5 字符串查找基礎 180
9.5.1 查找一個字符 180
9.5.2 查找任何幾個字符 181
9.5.3 查找一個子串 181
9.6 高級字符串查找 182
9.6.1 查找一個字符串前綴 182
9.6.2 查找標記 182
9.7 錯誤信息 184
9.8 字符操作 184
9.8.1 字符分類 184
9.8.2 字符轉換 184
9.9 內存操作 185
9.10 總結 186
9.11 警告的總結 187
9.12 編程提示的總結 187
9.13 問題 188
9.14 編程練習 188
第10章 結構和聯合 195
10.1 結構基礎知識 195
10.1.1 結構聲明 195
10.1.2 結構成員 197
10.1.3 結構成員的直接訪問 197
10.1.4 結構成員的間接訪問 198
10.1.5 結構的自引用 198
10.1.6 不完整的聲明 199
10.1.7 結構的初始化 199
10.2 結構、指針和成員 200
10.2.1 訪問指針 201
10.2.2 訪問結構 201
10.2.3 訪問結構成員 202
10.2.4 訪問嵌套的結構 203
10.2.5 訪問指針成員 204
10.3 結構的存儲分配 205
10.4 作為函數參數的結構 206
10.5 位段 209
10.6 聯合 211
10.6.1 變體記錄 212
10.6.2 聯合的初始化 213
10.7 總結 214
10.8 警告的總結 214
10.9 編程提示的總結 214
10.10 問題 215
10.11 編程練習 217
第11章 動態內存分配 221
11.1 為什么使用動態內存分配 221
11.2 malloc和free 221
11.3 calloc和realloc 222
11.4 使用動態分配的內存 223
11.5 常見的動態內存錯誤 223
11.6 內存分配實例 226
11.7 總結 231
11.8 警告的總結 232
11.9 編程提示的總結 232
11.10 問題 232
11.11 編程練習 233
第12章 使用結構和指針 235
12.1 鏈表 235
12.2 單鏈表 235
12.2.1 在單鏈表中插入 236
12.2.2 其他鏈表操作 245
12.3 雙鏈表 245
12.3.1 在雙鏈表中插入 246
12.3.2 其他鏈表操作 253
12.4 總結 253
12.5 警告的總結 254
12.6 編程提示的總結 254
12.7 問題 254
12.8 編程練習 255
第13章 高級指針話題 257
13.1 進一步探討指向指針的指針 257
13.2 高級聲明 258
13.3 函數指針 260
13.3.1 回調函數 261
13.3.2 轉移表 263
13.4 命令行參數 265
13.4.1 傳遞命令行參數 265
13.4.2 處理命令行參數 266
13.5 字符串常量 269
13.6 總結 271
13.7 警告的總結 272
13.8 編程提示的總結 272
13.9 問題 272
13.10 編程練習 275
第14章 預處理器 279
14.1 預定義符號 279
14.2 #define 279
14.2.1 宏 281
14.2.2 #define替換 282
14.2.3 宏與函數 283
14.2.4 帶副作用的宏參數 284
14.2.5 命名約定 285
14.2.6 #undef 285
14.2.7 命令行定義 285
14.3 條件編譯 286
14.3.1 是否被定義 287
14.3.2 嵌套指令 288
14.4 文件包含 288
14.4.1 函數庫文件包含 289
14.4.2 本地文件包含 289
14.4.3 嵌套文件包含 290
14.5 其他指令 291
14.6 總結 292
14.7 警告的總結 293
14.8 編程提示的總結 293
14.9 問題 293
14.10 編程練習 295
第15章 輸入/輸出函數 297
15.1 錯誤報告 297
15.2 終止執行 298
15.3 標準I/O函數庫 298
15.4 ANSI I/O概念 299
15.4.1 流 299
15.4.2 文件 300
15.4.3 標準I/O常量 300
15.5 流I/O總覽 301
15.6 打開流 302
15.7 關閉流 303
15.8 字符I/O 304
15.8.1 字符I/O宏 305
15.8.2 撤銷字符I/O 305
15.9 未格式化的行I/O 306
15.10 格式化的行I/O 308
15.10.1 scanf家族 308
15.10.2 scanf格式代碼 308
15.10.3 printf家族 312
15.10.4 printf格式代碼 312
15.11 二進制I/O 316
15.12 刷新和定位函數 316
15.13 改變緩沖方式 318
15.14 流錯誤函數 319
15.15 臨時文件 319
15.16 文件操縱函數 319
15.17 總結 320
15.18 警告的總結 321
15.19 編程提示的總結 322
15.20 問題 322
15.21 編程練習 323
第16章 標準函數庫 327
16.1 整型函數 327
16.1.1 算術 327
16.1.2 隨機數 328
16.1.3 字符串轉換 329
16.2 浮點型函數 329
16.2.1 三角函數 330
16.2.2 雙曲函數 330
16.2.3 對數和指數函數 330
16.2.4 浮點表示形式 331
16.2.5 冪 331
16.2.6 底數、頂數、值和余數 331
16.2.7 字符串轉換 332
16.3 日期和時間函數 332
16.3.1 處理器時間 332
16.3.2 當天時間 332
16.4 非本地跳轉 335
16.4.1 實例 336
16.4.2 何時使用非本地跳轉 337
16.5 信號 338
16.5.1 信號名 338
16.5.2 處理信號 339
16.5.3 信號處理函數 340
16.6 打印可變參數列表 341
16.7 執行環境 342
16.7.1 終止執行 342
16.7.2 斷言 342
16.7.3 環境 343
16.7.4 執行系統命令 343
16.7.5 排序和查找 344
16.8 locale 346
16.8.1 數值和貨幣格式 346
16.8.2 字符串和locale 348
16.8.3 改變locale的效果 349
16.9 總結 349
16.10 警告的總結 350
16.11 編程提示的總結 351
16.12 問題 351
16.13 編程練習 352
第17章 經典抽象數據類型 355
17.1 內存分配 355
17.2 堆棧 355
17.2.1 堆棧接口 356
17.2.2 實現堆棧 356
17.3 隊列 364
17.3.1 隊列接口 364
17.3.2 實現隊列 365
17.4 樹 369
17.4.1 在二叉搜索樹中插入 370
17.4.2 從二叉搜索樹刪除節點 370
17.4.3 在二叉搜索樹中查找 371
17.4.4 樹的遍歷 371
17.4.5 二叉搜索樹接口 372
17.4.6 實現二叉搜索樹 373
17.5 實現的改進 379
17.5.1 擁有超過一個的堆棧 379
17.5.2 擁有超過一種的類型 380
17.5.3 名字沖突 380
17.5.4 標準函數庫的ADT 381
17.6 總結 383
17.7 警告的總結 384
17.8 編程提示的總結 384
17.9 問題 384
17.10 編程練習 385
第18章 運行時環境 387
18.1 判斷運行時環境 387
18.1.1 測試程序 387
18.1.2 靜態變量和初始化 390
18.1.3 堆棧幀 391
18.1.4 寄存器變量 391
18.1.5 外部標識符的長度 393
18.1.6 判斷堆棧幀布局 393
18.1.7 表達式的副作用 398
18.2 C和匯編語言的接口 399
18.3 運行時效率 400
18.4 總結 402
18.5 警告的總結 403
18.6 編程提示的總結 403
18.7 問題 403
18.8 編程練習 403
附錄 部分問題答案 405
索引 443
參考文獻 448
以前對指針確實有些搞不清,看完之后是真的覺得是一本好書讓我自己理清了。如果對指針有什么不清楚的這本書沒錯!
C語言經典之作~~對指針的理解很深入~~是C語言的精髓啊~~
看開頭就覺得這本書很好,看過幾本C教材,感覺只是講一些表面的,理論的東西,導致很難真正用起來,這本書有很多實際的、深層次的解釋,所以很好理解,建議學C者購買,不過可能要有編程基礎。
這是我在當當買的第四本C方面的書了。書很經典,值得一讀。寫的也很詳細。不過這本書里面很多內容都有點古老,比如K&R C,UNIX C方面的一些知識現在都已經成了歷史了。但是仍然不失為一本經典著作。
C學習路上的重要經典書籍,我身邊搞C開發的小伙伴基本都有這本書。重點講了很重要的指針。
講C和C++的書真是汗牛充棟,C的精華是指針而C++的精華大概就要算是OPP了,從我個人的角度來說,這本書很和我的胃口,因為要研究linux內核的緣故,所以多了解了解C是很有幫助的
以前曾經學過C語言,但是指針一直是個瓶頸問題,無論怎么看都沒有搞清楚,但是看了這本書后感覺我從迷霧中走出來了!他從機器的底層 講解指針的表示和作用!是我感受頗深!
C和指針,表面看是講指針的,我覺得,它對C的各個細節都做了很詳細的講解,我非常佩服作者,我除了看過C程序設計,就看這本了。
整本書講述了C語言里面重要的指針??赐赀@本書,玩轉C指針
據說是學習C語言必看的,畢竟指針是C語言的精華,而且作者寫書的思路很獨特,書看了一部分,思路和例子都很棒,比較推薦的。
沖著這本書來的,的確非常經典的一本書,我不建議那些沒學過C語言基礎的人買,但是如果學過并想學好就應該買。還有,我認為當當網如果就專注于買書就好了,應該專業、專注。
首先,書的印刷很好,質量絕對沒得說。對書的內容,這本書的風格的確和國內的書大不一樣,最好在看之前有一點C的基礎,這樣看會很有體會。這本書涉及的內容很值得回味~~好書~~值得推薦
指針是C的靈魂,有需要了解指針下。這本書有助于你深入理解C的指針。
C語言經典書籍之一,對指針詳細的講解。不錯的書。
雖然我的水平不足以評論翻譯者的水平!!但是看完之后強烈建議,書名改為:C語言之路(或則C語言導論),根本不是簡單的說說指針而已,而是包羅萬象,把C語言的方面都提到了
很少寫評論,剛看了一章,很適合C語言查漏補缺
看過老譚那本C語言也許你能使用C語言進行編程,勤加練習,可能成為一個實踐的高手,看過K&R的C程序設計語言,將會對C有了進一步的認識和提高,而且K&R絕對是C語言的最有發言權的作者,不過這本C和指針會對你平時使用C進行開發的眾多疑惑進行解答,使你不僅知其然還知其所以然!
經典之作,與《C陷阱與缺陷》《C專家編程》等并稱編程三劍客,任何一個C程序員必看之作。
本書內容很好,開頭就是一段大程序,讓讀者很快進入C的世界,相對于其他基礎書籍的第一個例程Hello World更加專業,書中的講解到位,值得一看,不過要是對C基本語法有一定的了解,再看這本書,你會有很大收獲的!
本書對于C語言的語法很全面,是作者長時間實踐的結晶。對于指針的描述尤為突出。在書中作者通過各種提示的方式提醒各位C程序注意事項,并提出忠告。使初學者能夠更快的掌握C程序的難點。
正如本書的名字《C和指針》本書在講指針的時候 是真正的深入淺出,在學習本書之前,本人對指針學得總是暈頭,不知所挫,自從看了指針這一章后,突然對C有種特別的感悟,同時深入理解指針,對認識計算機更深入一層了。哈哈
毫無疑問,指針是C語言最有力的工具之一,允許程序員對內存直接進行操作.但是權利意味著責任與危險.使用指針也是造成很多詭異錯誤的根源.這本書正是為了這個目的編寫,既闡述了指針的強大特性,又重點介紹了如何規避指針帶來的底層錯誤.靈活運用指針又不產生錯誤是優秀C程序員必須做到的,在這方面這本書無疑是非常值得一看的.
指針,C語言的精華所在。在它方便快捷的同時,也給我們帶來了無盡的煩惱,內存泄露--指針惹得禍,程序崩潰---還是指針的作祟。C和指針這本書除了讓我們對C語言有了一次回顧和總結之外,更是對指針的一種深入理解,看過這本書,發現其實指針并不是想象中的可怕和令人畏懼。這真是一本好書。
一起買的四本書,一本都沒收到,更可氣的是東西沒收到,就被確認收貨了,聯系當當客服,說是物流確認收貨的,物流啥時候有這權利了,消費者的利益誰來保護,收沒收到貨不需要問問收獲人嗎?真是搞笑