|
-- 會員 / 註冊 --
|
|
|
|
C Primer Plus 第6版 中文版 ( 簡體 字) |
作者:[美]史蒂芬·普拉達(Stephen Prata) | 類別:1. -> 程式設計 -> C -> C |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 52426 詢問書籍請說出此書號!【缺書】 NT售價: 540 元 |
出版日:11/1/2019 |
頁數:541 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115521637 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:《C Primer Plus(第6版)中文版》詳細講解了C語言的基本概念和編程技巧。 《C Primer Plus(第6版)中文版》共17章。第1章、第2章介紹了C語言編程的預備知識。第3章∼第15章詳細講解了C語言的相關知識,包括數據類型、格式化輸入/輸出、運算符、表達式、語句、循環、字符輸入和輸出、函數、數組和指針、字符和字符串函數、內存管理、文件輸入和輸出、結構、位操作等。第16章、第17章介紹C預處理器、C庫和高級數據表示。本書以豐富多樣的程序為例,講解C語言的知識要點和注意事項。每章末尾設計了大量復習題和編程練習,幫助讀者鞏固所學知識和提高實際編程能力。附錄給出了各章復習題的參考答案和豐富的參考資料。 《C Primer Plus(第6版)中文版》可作為C語言的教材,適用于需要系統學習C語言的初學者,也適用于想要鞏固C語言知識或希望進一步提高編程技術的程序員。 |
目錄:第 1章 初識C語言 1 1.1 C語言的起源 1 1.2 選擇C語言的理由 1 1.2.1 設計特性 1 1.2.2 高效性 1 1.2.3 可移植性 2 1.2.4 強大而靈活 2 1.2.5 面向程序員 2 1.2.6 缺點 3 1.3 C語言的應用范圍 3 1.4 計算機能做什么 4 1.5 高級計算機語言和編譯器 4 1.6 語言標準 5 1.6.1 第 1個ANSI/ISO C標準 5 1.6.2 C99標準 6 1.6.3 C11標準 6 1.7 使用C語言的7個步驟 6 1.7.1 第 1步:定義程序的目標 7 1.7.2 第 2步:設計程序 7 1.7.3 第3步:編寫代碼 7 1.7.4 第4步:編譯 8 1.7.5 第5步:運行程序 8 1.7.6 第6步:測試和調試程序 8 1.7.7 第7步:維護和修改代碼 8 1.7.8 說明 9 1.8 編程機制 9 1.8.1 目標代碼文件、可執行文件和庫 9 1.8.2 UNIX系統 10 1.8.3 GNU編譯器集合和LLVM項目 12 1.8.4 Linux系統 12 1.8.5 PC的命令行編譯器 12 1.8.6 集成開發環境(Windows) 13 1.8.7 Windows/Linux 14 1.8.8 Macintosh中的C 14 1.9 本書的組織結構 14 1.10 本書的約定 15 1.10.1 字體 15 1.10.2 程序輸出 15 1.10.3 特殊元素 16 1.11 本章小結 16 1.12 復習題 16 1.13 編程練習 16 第 2章 C語言概述 17 2.1 簡單的C程序示例 17 2.2 示例解釋 18 2.2.1 第 1遍:快速概要 18 2.2.2 第 2遍:程序細節 19 2.3 簡單程序的結構 24 2.4 提高程序可讀性的技巧 25 2.5 進一步使用C 26 2.5.1 程序說明 26 2.5.2 多條聲明 27 2.5.3 乘法 27 2.5.4 打印多個值 27 2.6 多個函數 27 2.7 調試程序 28 2.7.1 語法錯誤 29 2.7.2 語義錯誤 29 2.7.3 程序狀態 30 2.8 關鍵字和保留標識符 31 2.9 關鍵概念 31 2.10 本章小結 31 2.11 復習題 32 2.12 編程練習 33 第3章 數據和C 34 3.1 示例程序 34 3.1.1 程序中的新元素 35 3.2 變量與常量數據 36 3.3 數據:數據類型關鍵字 36 3.3.1 整數和浮點數 37 3.3.2 整數 37 3.3.3 浮點數 38 3.4 C語言基本數據類型 38 3.4.1 int類型 38 3.4.2 其他整數類型 41 3.4.3 使用字符:char類型 44 3.4.4 _Bool類型 48 3.4.5 可移植類型:stdint.h和 inttypes.h 48 3.4.6 float、double和 long double 49 3.4.7 復數和虛數類型 52 3.4.8 其他類型 53 3.4.9 類型大小 54 3.5 使用數據類型 55 3.6 參數和陷阱 55 3.7 轉義序列示例 56 3.7.1 程序運行情況 57 3.7.2 刷新輸出 57 3.8 關鍵概念 58 3.9 本章小結 58 3.10 復習題 58 3.11 編程練習 60 第4章 字符串和格式化輸入/輸出 61 4.1 前導程序 61 4.2 字符串簡介 62 4.2.1 char類型數組和null字符 62 4.2.2 使用字符串 63 4.2.3 strlen()函數 63 4.3 常量和C預處理器 65 4.3.1 const限定符 67 4.3.2 明示常量 67 4.4 printf()和scanf() 69 4.4.1 printf()函數 69 4.4.2 使用printf() 70 4.4.3 printf()的轉換說明修飾符 71 4.4.4 轉換說明的意義 75 4.4.5 使用scanf() 79 4.4.6 printf()和scanf()的* 修飾符 82 4.4.7 printf()的用法提示 83 4.5 關鍵概念 84 4.6 本章小結 85 4.7 復習題 85 4.8 編程練習 87 第5章 運算符、表達式和語句 88 5.1 循環簡介 88 5.2 基本運算符 90 5.2.1 賦值運算符:= 90 5.2.2 加法運算符:+ 91 5.2.3 減法運算符:- 92 5.2.4 符號運算符:-和+ 92 5.2.5 乘法運算符:* 92 5.2.6 除法運算符:/ 93 5.2.7 運算符優先級 94 5.2.8 優先級和求值順序 95 5.3 其他運算符 96 5.3.1 sizeof運算符和size_t類型 96 5.3.2 求模運算符:% 97 5.3.3 遞增運算符:++ 98 5.3.4 遞減運算符:-- 100 5.3.5 優先級 101 5.3.6 不要自作聰明 101 5.4 表達式和語句 102 5.4.1 表達式 102 5.4.2 語句 103 5.4.3 復合語句(塊) 105 5.5 類型轉換 106 5.6 帶參數的函數 109 5.7 示例程序 110 5.8 關鍵概念 111 5.9 本章小結 112 5.10 復習題 112 5.11 編程練習 114 第6章 C控制語句:循環 116 6.1 再探while循環 116 6.1.1 程序注釋 117 6.1.2 C風格讀取循環 118 6.2 while語句 118 6.2.1 終止while循環 119 6.2.2 何時終止循環 119 6.2.3 while:入口條件循環 120 6.2.4 語法要點 120 6.3 用關系運算符和表達式比較大小 121 6.3.1 什么是真 122 6.3.2 其他真值 123 6.3.3 真值的問題 124 6.3.4 新的_Bool類型 125 6.3.5 優先級和關系運算符 126 6.4 不確定循環和計數循環 127 6.5 for循環 128 6.6 其他賦值運算符:+=、-=、*=、 /=、%= 132 6.7 逗號運算符 133 6.8 出口條件循環:do while 136 6.9 如何選擇循環 138 6.10 嵌套循環 138 6.10.1 程序分析 139 6.10.2 嵌套變式 139 6.11 數組簡介 140 6.12 使用函數返回值的循環示例 142 6.12.1 程序分析 144 6.12.2 使用帶返回值的函數 144 6.13 關鍵概念 145 6.14 本章小結 145 6.15 復習題 146 6.16 編程練習 149 第7章 C控制語句:分支和跳轉 151 7.1 if語句 151 7.2 if else語句 152 7.2.1 另一個示例:介紹getchar()和putchar() 153 7.2.2 ctype.h系列的字符函數 155 7.2.3 多重選擇else if 156 7.2.4 else與if配對 158 7.2.5 多層嵌套的if語句 159 7.3 邏輯運算符 162 7.3.1 備選拼寫:iso646.h頭文件 163 7.3.2 優先級 164 7.3.3 求值順序 164 7.3.4 范圍 165 7.4 一個統計單詞的程序 165 7.5 條件運算符: : 168 7.6 循環輔助:continue和break 169 7.6.1 continue語句 169 7.6.2 break語句 171 7.7 多重選擇:switch和break 173 7.7.1 switch語句 174 7.7.2 只讀每行的首字符 176 7.7.3 多重標簽 176 7.7.4 switch和if else 178 7.8 goto語句 178 7.9 關鍵概念 181 7.10 本章小結 181 7.11 復習題 181 7.12 編程練習 184 第8章 字符輸入/輸出和輸入驗證 186 8.1 單字符I/O:getchar()和 putchar() 186 8.2 緩沖區 187 8.3 結束鍵盤輸入 188 8.3.1 文件、流和鍵盤輸入 188 8.3.2 文件結尾 189 8.4 重定向和文件 191 8.5 創建更友好的用戶界面 194 8.5.1 使用緩沖輸入 194 8.5.2 混合數值和字符輸入 196 8.6 輸入驗證 198 8.6.1 分析程序 201 8.6.2 輸入流和數字 201 8.7 菜單瀏覽 202 8.7.1 任務 202 8.7.2 使執行更順利 202 8.7.3 混合字符和數值輸入 204 8.8 關鍵概念 206 8.9 本章小結 206 8.10 復習題 207 8.11 編程練習 208 第9章 函數 209 9.1 復習函數 209 9.1.1 創建并使用簡單函數 210 9.1.2 分析程序 210 9.1.3 函數參數 212 9.1.4 定義帶形式參數的函數 213 9.1.5 聲明帶形式參數函數的原型 214 9.1.6 調用帶實際參數的函數 214 9.1.7 黑盒視角 215 9.1.8 使用return從函數中返回值 215 9.1.9 函數類型 217 9.2 ANSI C函數原型 218 9.2.1 問題所在 218 9.2.2 ANSI的解決方案 219 9.2.3 無參數和未指定參數 220 9.2.4 函數原型的優點 220 9.3 遞歸 220 9.3.1 演示遞歸 220 9.3.2 遞歸的基本原理 221 9.3.3 尾遞歸 222 9.3.4 遞歸和倒序計算 224 9.3.5 遞歸的優缺點 225 9.4 編譯多源代碼文件的程序 226 9.4.1 UNIX 226 9.4.2 Linux 226 9.4.3 DOS命令行編譯器 226 9.4.4 Windows和蘋果的IDE編譯器 226 9.4.5 使用頭文件 226 9.5 查找地址:&運算符 229 9.6 更改主調函數中的變量 230 9.7 指針簡介 231 9.7.1 間接運算符:* 232 9.7.2 聲明指針 232 9.7.3 使用指針在函數間通信 233 9.8 關鍵概念 236 9.9 本章小結 236 9.10 復習題 236 9.11 編程練習 237 第 10章 數組和指針 238 10.1 數組 238 10.1.1 初始化數組 238 10.1.2 指定初始化器(C99) 241 10.1.3 給數組元素賦值 242 10.1.4 數組邊界 243 10.1.5 指定數組的大小 244 10.2 多維數組 244 10.2.1 初始化二維數組 247 10.2.2 其他多維數組 247 10.3 指針和數組 248 10.4 函數、數組和指針 250 10.4.1 使用指針形參 251 10.4.2 指針表示法和數組表示法 253 10.5 指針操作 253 10.6 保護數組中的數據 256 10.6.1 對形式參數使用const 257 10.6.2 const的其他內容 258 10.7 指針和多維數組 259 10.7.1 指向多維數組的指針 261 10.7.2 指針的兼容性 262 10.7.3 函數和多維數組 263 10.8 變長數組(VLA) 266 10.9 復合字面量 269 10.10 關鍵概念 270 10.11 本章小結 271 10.12 復習題 271 10.13 編程練習 273 第 11章 字符串和字符串函數 275 11.1 表示字符串和字符串I/O 275 11.1.1 在程序中定義字符串 276 11.1.2 指針和字符串 281 11.2 字符串輸入 282 11.2.1 分配空間 282 11.2.2 不幸的gets()函數 282 11.2.3 gets()的替代品 283 11.2.4 scanf()函數 288 11.3 字符串輸出 289 11.3.1 puts()函數 289 11.3.2 fputs()函數 290 11.3.3 printf()函數 291 11.4 自定義輸入/輸出函數 291 11.5 字符串函數 293 11.5.1 strlen()函數 293 11.5.2 strcat()函數 294 11.5.3 strncat()函數 295 11.5.4 strcmp()函數 296 11.5.5 strcpy()和strncpy()函數 301 11.5.6 sprintf()函數 305 11.5.7 其他字符串函數 306 11.6 字符串示例:字符串排序 307 11.6.1 排序指針而非字符串 308 11.6.2 選擇排序算法 309 11.7 ctype.h字符函數和字符串 310 11.8 命令行參數 311 11.8.1 集成環境中的命令行參數 312 11.8.2 Macintosh中的命令行參數 312 11.9 把字符串轉換為數字 313 11.10 關鍵概念 315 11.11 本章小結 315 11.12 復習題 316 11.13 編程練習 318 第 12章 存儲類別、鏈接和內存管理 320 12.1 存儲類別 320 12.1.1 作用域 321 12.1.2 鏈接 322 12.1.3 存儲期 323 12.1.4 自動變量 324 12.1.5 寄存器變量 326 12.1.6 塊作用域的靜態變量 327 12.1.7 外部鏈接的靜態變量 328 12.1.8 內部鏈接的靜態變量 331 12.1.9 多文件 331 12.1.10 存儲類別說明符 332 12.1.11 存儲類別和函數 334 12.1.12 存儲類別的選擇 334 12.2 隨機數函數和靜態變量 334 12.3 擲骰子 337 12.4 分配內存:malloc()和free() 340 12.4.1 free()的重要性 343 12.4.2 calloc()函數 343 12.4.3 動態內存分配和變長數組 344 12.4.4 存儲類別和動態內存分配 344 12.5 ANSI C類型限定符 346 12.5.1 const類型限定符 346 12.5.2 volatile類型限定符 347 12.5.3 restrict類型限定符 348 12.5.4 _Atomic類型限定符(C11) 349 12.5.5 舊關鍵字的新位置 349 12.6 關鍵概念 349 12.7 本章小結 350 12.8 復習題 350 12.9 編程練習 352 第 13章 文件輸入/輸出 354 13.1 與文件進行通信 354 13.1.1 文件是什么 354 13.1.2 文本模式和二進制模式 354 13.1.3 I/O的級別 355 13.1.4 標準文件 356 13.2 標準I/O 356 13.2.1 檢查命令行參數 357 13.2.2 fopen()函數 357 13.2.3 getc()和putc()函數 358 13.2.4 文件結尾 358 13.2.5 fclose()函數 359 13.2.6 指向標準文件的指針 359 13.3 一個簡單的文件壓縮程序 360 13.4 文件I/O:fprintf()、fscanf()、 fgets()和fputs() 361 13.4.1 fprintf()和fscanf() 函數 361 13.4.2 fgets()和fputs()函數 362 13.5 隨機訪問:fseek()和ftell() 363 13.5.1 fseek()和ftell()的工作 原理 364 13.5.2 二進制模式和文本模式 365 13.5.3 可移植性 365 13.5.4 fgetpos()和fsetpos() 函數 365 13.6 標準I/O的機理 366 13.7 其他標準I/O函數 366 13.7.1 int ungetc(int c, FILE *fp) 函數 367 13.7.2 int fflush()函數 367 13.7.3 int setvbuf()函數 367 13.7.4 二進制I/O:fread() 和fwrite() 367 13.7.5 size_t fwrite()函數 368 13.7.6 size_t fread()函數 369 13.7.7 int feof(FILE *fp)和 int ferror(FILE *fp) 函數 369 13.7.8 一個程序示例 369 13.7.9 用二進制I/O進行隨機訪問 372 13.8 關鍵概念 373 13.9 本章小結 373 13.10 復習題 374 13.11 編程練習 375 第 14章 結構和其他數據形式 377 14.1 示例問題:創建圖書目錄 377 14.2 建立結構聲明 378 14.3 定義結構變量 379 14.3.1 初始化結構 380 14.3.2 訪問結構成員 380 14.3.3 結構的初始化器 381 14.4 結構數組 381 14.4.1 聲明結構數組 383 14.4.2 標識結構數組的成員 383 14.4.3 程序討論 384 14.5 嵌套結構 384 14.6 指向結構的指針 386 14.6.1 聲明和初始化結構指針 387 14.6.2 用指針訪問成員 387 14.7 向函數傳遞結構的信息 387 14.7.1 傳遞結構成員 388 14.7.2 傳遞結構的地址 388 14.7.3 傳遞結構 389 14.7.4 其他結構特性 390 14.7.5 結構和結構指針的選擇 393 14.7.6 結構中的字符數組和字符指針 394 14.7.7 結構、指針和malloc() 394 14.7.8 復合字面量和結構(C99) 397 14.7.9 伸縮型數組成員(C99) 398 14.7.10 匿名結構(C11) 400 14.7.11 使用結構數組的函數 400 14.8 把結構內容保存到文件中 401 14.8.1 保存結構的程序示例 402 14.8.2 程序要點 404 14.9 鏈式結構 405 14.10 聯合簡介 405 14.10.1 使用聯合 406 14.10.2 匿名聯合(C11) 407 14.11 枚舉類型 408 14.11.1 enum常量 408 14.11.2 默認值 408 14.11.3 賦值 409 14.11.4 enum的用法 409 14.11.5 共享名稱空間 410 14.12 typedef簡介 411 14.13 其他復雜的聲明 412 14.14 函數和指針 413 14.15 關鍵概念 418 14.16 本章小結 418 14.17 復習題 419 14.18 編程練習 421 第 15章 位操作 423 15.1 二進制數、位和字節 423 15.1.1 二進制整數 423 15.1.2 有符號整數 424 15.1.3 二進制浮點數 424 15.2 其他進制數 425 15.2.1 八進制 425 15.2.2 十六進制 425 15.3 C按位運算符 426 15.3.1 按位邏輯運算符 426 15.3.2 用法:掩碼 427 15.3.3 用法:打開位(設置位) 428 15.3.4 用法:關閉位(清空位) 428 15.3.5 用法:切換位 428 15.3.6 用法:檢查位的值 429 15.3.7 移位運算符 429 15.3.8 編程示例 430 15.3.9 另一個例子 432 15.4 位字段 433 15.4.1 位字段示例 434 15.4.2 位字段和按位運算符 437 15.5 對齊特性(C11) 442 15.6 關鍵概念 443 15.7 本章小結 443 15.8 復習題 444 15.9 編程練習 445 第 16章 C預處理器和C庫 447 16.1 翻譯程序的第 一步 447 16.2 明示常量:#define 448 16.2.1 記號 450 16.2.2 重定義常量 450 16.3 在#define中使用參數 451 16.3.1 用宏參數創建字符串:# 運算符 452 16.3.2 預處理器黏合劑:##運算符 453 16.3.3 變參宏:...和_ _VA_ARGS_ _ 454 16.4 宏和函數的選擇 454 16.5 文件包含:#include 455 16.5.1 頭文件示例 456 16.5.2 使用頭文件 457 16.6 其他指令 458 16.6.1 #undef指令 458 16.6.2 從C預處理器角度看已定義 458 16.6.3 條件編譯 459 16.6.4 預定義宏 462 16.6.5 #line和#error 463 16.6.6 #pragma 463 16.6.7 泛型選擇(C11) 464 16.7 內聯函數(C99) 465 16.8 _Noreturn函數(C11) 467 16.9 C庫 467 16.9.1 訪問C庫 467 16.9.2 使用庫描述 468 16.10 數學庫 469 16.10.1 三角問題 469 16.10.2 類型變體 471 16.10.3 tgmath.h庫(C99) 472 16.11 通用工具庫 472 16.11.1 exit()和atexit()函數 472 16.11.2 qsort()函數 474 16.12 斷言庫 477 16.12.1 assert的用法 477 16.12.2 _Static_assert(C11) 478 16.13 string.h庫中的memcpy()和 memmove() 479 16.14 可變參數:stdarg.h 481 16.15 關鍵概念 482 16.16 本章小結 483 16.17 復習題 483 16.18 編程練習 484 第 17章 高級數據表示 486 17.1 研究數據表示 486 17.2 從數組到鏈表 488 17.2.1 使用鏈表 491 17.2.2 反思 493 17.3 抽象數據類型(ADT) 494 17.3.1 建立抽象 494 17.3.2 建立接口 495 17.3.3 使用接口 498 17.3.4 實現接口 500 17.4 隊列ADT 505 17.4.1 定義隊列抽象數據類型 505 17.4.2 定義一個接口 505 17.4.3 實現接口數據表示 506 17.4.4 測試隊列 512 17.5 用隊列進行模擬 514 17.6 鏈表和數組 518 17.7 二叉查找樹 521 17.7.1 二叉樹ADT 522 17.7.2 二叉查找樹接口 522 17.7.3 二叉樹的實現 524 17.7.4 使用二叉樹 535 17.7.5 樹的思想 538 17.8 其他說明 539 17.9 關鍵概念 540 17.10 本章小結 540 17.11 復習題 540 17.12 編程練習 541 |
序: |
|