明解 C語言:實踐篇

[日]柴田望洋

  • 出版商: 人民郵電
  • 出版日期: 2024-01-01
  • 售價: $539
  • 貴賓價: 9.5$512
  • 語言: 簡體中文
  • 頁數: 305
  • ISBN: 7115624976
  • ISBN-13: 9787115624970
  • 相關分類: C 程式語言
  • 立即出貨

  • 明解 C語言:實踐篇-preview-1
  • 明解 C語言:實踐篇-preview-2
明解 C語言:實踐篇-preview-1

買這商品的人也買了...

商品描述

本書圍繞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