明解 C語言:實踐篇
[日]柴田望洋
買這商品的人也買了...
-
$810$770 -
$834$792 -
$1,350$1,283 -
$1,200$948 -
$602用“芯”探核基於龍芯的 Linux 內核探索解析
-
$474$450 -
$454嵌入式 Linux 系統設計及應用 — 基於國產龍芯 SoC
-
$1,194$1,134 -
$954$906 -
$580$458 -
$454算法設計與分析——基於C++編程語言的描述
-
$894$849 -
$654$621 -
$428嵌入式 Linux 操作系統原理與應用
-
$588$559 -
$1,068$1,015 -
$539$512 -
$301Arduino開源硬件概論(第2版)
-
$600$468 -
$534$507 -
$820$648 -
$1,079$1,025 -
$654$621 -
$834$792 -
$820$648
相關主題
商品描述
本書圍繞C語言編程學習和開發實踐中經常遇到的問題和重點,結合大量代碼和圖表,從容易出現的錯誤(ERROR)開始講起,到類型轉換、字符串和指針、結構體和共享體、文件處理、在程序運行時動態生成必要大小的對象(變量)的方法,再到線性表的應用、二叉查找樹的應用、控制台畫面的控制等,詳細介紹了C語言中的眾多技巧,目標在於提高讀者解決實際問題的能力。本書適合有一定C語言基礎的讀者閱讀。
作者簡介
作者柴田望洋,1963年出生,日本复岗工业大学信息工程学院副教授。编写了一系列极富影响力的计算机教材和参考书,如《明解C++》《明解Java》等。
目錄大綱
目 錄
第 1章 看不見的錯誤輸入 1
1-1 看不見的錯誤 2
看不見的錯誤 2
難以察覺的錯誤 3
容易忽略的錯誤 5
預處理指令中的空白字符 7
#if 指令和註釋 7
頭文件保護符 9
函數式宏及其運行效率 10
函數式宏的副作用 10
C++ 中max2的實現 12
1-2 初始化 15
初始化和賦值 15
對象 16
自動存儲期 16
靜態存儲期 18
標識符的有效範圍和初始化 20
數組的初始化 22
多維數組的初始化 24
使用 typedef名的數組的初始化 26
第 2章 類型轉換 29
2-1 類型轉換 30
-1和1哪個大? 30
if 語句的求值 31
關系運算符和關系式 31
相等運算符和等式 32
if 語句的控製表達式 35
隱式類型轉換 37
普通算術類型轉換 38
2-2 有符號整數和無符號整數 39
無符號整數在內存中的表示 39
有符號整數在內存中的表示 41
整型提升 43
有符號整數和無符號整數之間的類型轉換 45
問題的解決 47
補碼表示的有符號整數到無符號整數的類型轉換 48
第 3章 關於指針 53
3-1 指針和地址 54
地址和取址運算符 54
指針和間接運算符 55
3-2 指針和函數調用 58
值傳遞 58
傳遞指針給函數 59
傳遞指針的指針給函數 61
3-3 指針和數組 64
數組的傳遞 64
表示數組末尾的哨兵 67
指針、數組和數據類型 69
3-4 指針和多維數組 72
數據類型的派生和多維數組 72
多維數組和指針 76
3-5 動態對象的生成 80
動態存儲期 80
void 指針 81
單個對象的生成 81
數組對象的生成 83
多維數組對象的生成 85
第 4章 字符串和指針 89
4-1 字符和字符串 90
字符和字符串 90
字符和字符常量 90
字符的值 91
字符串 93
字符串字面量 95
字符串字面量和字符串常量 97
用指針實現的字符串的操作 99
指向字符串的指針 100
字符串數組 101
4-2 字符串的處理 103
字符串的復制 103
字符串不能為空? 106
使字符串為空的兩種方法 108
使字符串為空的錯誤方法 110
問題的解決 111
存儲空間的清空 113
字符串的動態生成 115
字符串數組的動態生成 117
第 5章 NULL 119
5-1 空指令、空字符和空語句 120
null 120
空指令 120
空字符 121
空字符串 121
空語句 122
5-2 空指針和NULL 124
空指針 124
空指針常量 124
返回空指針的函數 124
空指針在內存中的表示不一定為 0 125
第 6章 函數的定義和聲明 129
6-1 函數的定義和調用 130
函數定義的順序 130
調用未聲明的函數 131
默認的 int型 132
未聲明的函數的處理 133
老式風格的函數聲明 135
老式風格的函數聲明的陷阱 136
6-2 函數原型聲明 137
函數原型聲明 137
默認參數提升 138
參數名 142
可變參數的聲明 143
va_start 宏:訪問可變參數前的準備 145
va_arg 宏:取出可變參數 146
va_end 宏:結束對可變參數的訪問 147
vprintf 函數/vfprintf函數:輸出到流 147
第 7章 結構體和共享體 151
7-1 結構體 152
結構體的基礎 152
成員的訪問 153
結構體對象的初始化 153
結構體和宏 154
結構體和 typedef聲明 155
相互引用的結構體 157
7-2 結構體與字節對齊 162
代碼優化 162
結構體和字節對齊 163
offsetof 宏 165
7-3 共享體 168
共享體 168
共享體對象的初始化 168
公共初始序列 169
第 8章 文件處理和文本文件 173
8-1 文本文件 174
文件和流 174
文件的打開和關閉 175
FILE 型 177
輸入輸出庫函數 178
問題和解決方法 184
解決方法一:添加無效數據 185
解決方法二:優化程序 186
8-2 作為字符的數據 189
數值的讀取 189
數值和字符串 190
使用 sprintf 函數將數據寫入字符串 196
使用 sscanf 函數從字符串中讀取數據 197
第 9章 文件的應用 201
9-1 流和緩沖區 202
調用的函數未被執行? 202
緩沖區的刷新 203
流的緩沖區 205
問題的解決 207
9-2 文本文件和二進制文件 209
文本和二進制 209
文件的轉儲 210
二進制文件的訪問 212
字節序 214
換行符的處理 214
第 10章 棧溢出 217
10-1 棧 218
棧的實現 218
10-2 棧溢出 224
函數調用和棧 224
數據和棧 225
棧溢出 227
檢測棧溢出的原理 229
如果棧被破壞 230
第 11章 庫開發的基礎 231
11-1 源文件的分離和鏈接 232
單字符輸入輸出庫 232
隊列 234
庫的使用示例 235
分離式編譯 236
鏈接性 237
11-2 庫開發 240
源文件的分離 240
正確的示例 243
第 12章 線性表的應用 249
12-1 線性表 250
線性表 250
節點的實現 250
線性表的特點 251
線性表的實現 252
線性表存儲空間的動態分配 256
12-2 用數組實現的線性表 258
用數組實現的線性表 258
刪除的記錄的管理 261
12-3 帶索引的線性表 264
帶索引的線性表 264
索引表 270
第 13章 二叉查找樹的應用 273
13-1 二叉查找樹 274
二叉查找樹 274
二叉查找樹和線性表 278
13-2 非遞歸查找及其應用 282
遞歸的過程 282
遞歸函數的非遞歸實現 283
問題的解決 285
第 14章 控制台的操作 291
14-1 轉義序列 292
轉義序列 292
14-2 畫面控制庫 296
Windows API 的使用 296
clearscreen 實用程序 299
setcolor 實用程序 299
猜數游戲 301
致 謝 304
作者簡介 305