你好,C語言

周聖傑、林耿亮

  • 出版商: 清華大學
  • 出版日期: 2023-09-01
  • 售價: $599
  • 貴賓價: 9.5$569
  • 語言: 簡體中文
  • 頁數: 370
  • 裝訂: 平裝
  • ISBN: 7302644195
  • ISBN-13: 9787302644194
  • 相關分類: C 程式語言
  • 立即出貨 (庫存 < 3)

  • 你好,C語言-preview-1
  • 你好,C語言-preview-2
  • 你好,C語言-preview-3
你好,C語言-preview-1

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

商品描述

本書是一本全面介紹 C 語言的技術性書籍,旨在幫助讀者深入瞭解 C 語言的基礎知識和高級特性,以及它在實際項目中的應用。全書共 15 章,首先通過清晰易懂的語言,深入淺出地解釋了C 語言的語法和編程原理,其次重點介紹了 C 語言的指針操作、內存管理、文件處理和模塊化編程等關鍵概念。此外,本書還提供了主富的實例,幫助讀者加深對 C 語言的理解,並通過實踐鍛煉讀者解決實際問題的能力本書適合作為高等院校電腦科學及相關專業的教材和教學參考書,也可作為職業開發人員的自學用書和參考手冊。無論是初學者還是有一定編程基礎的開發人員,都可以從本書中獲得實用的 C 語言編程知識和技能,提升自己在軟件開發領域的能力。

目錄大綱

 

第1章   初識C語言 1

1.1  C語言的發明及發展 1

1.2  C語言現狀 3

1.3  C語言開發環境的搭建 5

1.3.1  下載Visual Studio 6

1.3.2  安裝Visual Studio 7

1.3.3  激活Visual Studio 9

第2章   C語言基礎知識 10

2.1  第一個C語言程序 10

2.1.1  創建項目和源文件 11

2.1.2  編寫並運行程序 14

2.1.3  新手常見錯誤 15

2.2  函數 16

2.2.1  主函數 16

2.2.2  函數的概念 17

2.2.3  自定義函數 18

2.2.4  調用函數 19

2.3  變量和常量 21

2.4  printf函數和include命令 23

2.4.1  printf函數 23

2.4.2  include命令 24

第3章   數據類型 25

3.1  整型數據類型 25

3.1.1  各種整型數據類型 25

3.1.2  sizeof測量大小 26

3.1.3  三位二進制的數值範圍 27

3.1.4  數值的補碼表示法 28

3.1.5  整型的數值範圍 29

3.1.6  無符號整型 30

3.2  浮點數據類型 30

3.2.1  float 31

3.2.2  double 31

3.2.3  浮點類型占用的空間大小 32

3.3  變量 32

3.3.1  變量命名規則 34

3.3.2  初始化和賦值 34

3.4  常量 36

3.4.1  字面常量 36

3.4.2  符號常量 37

3.5  字符 38

3.5.1  字符常量 38

3.5.2  ASCII碼 40

3.5.3  字符變量 41

3.5.4  字符串常量 42

3.5.5  轉義字符 43

第4章   格式化輸入和輸出 46

4.1  printf函數 46

4.1.1  類型提升 48

4.1.2  轉換規範 50

4.1.3  轉換操作 50

4.1.4  長度指示符 56

4.1.5  精度 58

4.1.6  最小字段寬度 59

4.1.7  標志 60

4.2  scanf函數 62

4.2.1  Visual Studio安全報錯 62

4.2.2  scanf函數的使用公式 64

4.2.3  scanf函數的匹配規則 66

4.2.4  輸入字符 67

4.2.5  輸入字符串 68

第5章   運算符和表達式 69

5.1  表達式 69

5.2  運算符 70

5.3  類型轉換 77

5.3.1  同類型運算 78

5.3.2  不同類型運算 80

5.3.3  自動類型轉換 84

5.3.4  整型運算丟失精度 85

5.3.5  強制類型轉換 86

5.3.6  賦值造成的類型轉換 87

5.4  關系運算符 88

5.4.1  大於(>)和小於(<) 88

5.4.2  大於或等於(>=)和小於或等於(<=) 89

5.4.3  等於(==)和不等於(!=) 89

5.5  邏輯運算符 90

5.5.1  邏輯或(||)和邏輯與(&&) 91

5.5.2  邏輯非(!) 92

5.5.3  運算符優先級 92

第6章   控制流 94

6.1  分支結構 94

6.1.1  分支流程 95

6.1.2  else關鍵字 96

6.1.3  復合語句 97

6.1.4  嵌套if語句 99

6.1.5  else if語句 102

6.1.6  條件運算符 103

6.2  循環結構 104

6.2.1  while循環 105

6.2.2  for循環 107

6.2.3  do-while循環 110

6.2.4  循環嵌套 111

6.3  break和continue 112

6.3.1  break跳出循環 112

6.3.2  continue開始新一輪循環 115

6.3.3  使用break和continue 115

6.3.4  循環嵌套中使用break和continue 116

6.4  多重選擇 117

6.4.1  switch語句 118

6.4.2  在switch中使用break 120

6.4.3  連續轉換程序 121

6.4.4  break和continue的作用範圍 123

第7章   數組 125

7.1  初識數組 125

7.2  數組初始化 126

7.3  訪問數組元素 128

7.3.1  遍歷數組的循環 128

7.3.2  小心數組越界 129

7.3.3  不初始化數組會怎樣 130

7.4  數組占用空間大小 131

7.5  數組賦值 131

7.5.1  逐個元素賦值 132

7.5.2  內存復制 132

7.6  多維數組 133

7.6.1  使用數組作為數組的元素 133

7.6.2  二維數組 134

7.6.3  實現更高維度的數組 136

7.7  字符串與字符數組 138

7.7.1  字符數組存儲字符串 138

7.7.2  字符串結尾標記'\0' 139

7.7.3  字符數組的大小及長度 141

7.7.4  修改字符數組 142

7.7.5  從鍵盤輸入字符串到字符數組中 143

7.7.6  其他的輸入和輸出函數 144

7.8  輸入和輸出緩存 146

7.8.1  輸出緩存區 147

7.8.2  輸入緩存區 148

7.8.3  非標準的輸入函數 151

第8章   函數 154

8.1  函數的定義 154

8.2  函數的調用 155

8.3  使用函數的意義 156

8.3.1  計算三角形面積 156

8.3.2  復用代碼 158

8.4  函數返回值 159

8.5  函數聲明 160

8.6  形參與實參 163

8.6.1  自動類型轉換 163

8.6.2  形參與實參相互獨立 164

8.6.3  不同函數的變量相互獨立 166

8.6.4  數組作為函數參數 166

8.7  函數遞歸 167

8.7.1  函數遞歸調用的示例 167

8.7.2  正確的遞歸實現 168

8.7.3  遞推和回歸 169

8.7.4  用遞歸計算階乘 170

8.7.5  遞歸計算斐波那契數列 171

8.8  調試代碼 172

8.8.1  調試模式與發布模式 172

8.8.2  調試功能在Visual Studio中的運用 174

第9章   指針 179

9.1  指針基礎 179

9.1.1  內存和內存地址 179

9.1.2  指針類型 181

9.1.3  使用指針 182

9.1.4  指針類型的大小 183

9.1.5  指針類型轉換 185

9.1.6  指針基礎例題 185

9.2  指針運算 186

9.2.1  指針與整型進行加減 186

9.2.2  指針運算的應用 188

9.2.3  同類型指針間的減法運算 189

9.2.4  其他類型的指針運算 190

9.2.5  指針運算例題 190

9.3  指針和數組 191

9.3.1  通過首元素獲取數組首地址 191

9.3.2  通過數組名獲取數組首地址 192

9.3.3  指針和數組的關系 194

9.3.4  指針與數組例題 195

9.4  指針作為函數參數傳遞 196

9.4.1  將指針作為函數參數進行傳遞 198

9.4.2  通用指針void * 199

9.4.3  將數組作為函數參數進行傳遞 200

9.4.4  將指針作為函數參數傳遞的例題 201

9.5  多級指針 202

9.5.1  指針的指針 202

9.5.2  多級指針的應用 204

9.5.3  多級指針例題 205

9.6  指針數組 205

9.6.1  定義、初始化和訪問指針數組 206

9.6.2  更復雜的例子 206

9.6.3  指針數組例題 208

9.7  函數返回指針 209

9.7.1  從函數中返回多個變量 210

9.7.2  函數返回指針例題 211

9.8  指針和多維數組 212

9.8.1  數組名的轉換規則 213

9.8.2  多維數組名和指針 213

9.8.3  移動數組指針 215

9.8.4  為數組指針取值 216

9.8.5  指針訪問與下標訪問等價 219

9.8.6  對數組名取地址 222

9.8.7  數組指針的運用 222

9.8.8  指針和多維數組例題 223

9.9  指針和三維數組 224

9.9.1  指針訪問三維數組元素 225

9.9.2  指針和三維數組例題 228

9.10  聲明器 229

9.10.1  聲明與使用形式統一 230

9.10.2  函數聲明器 230

9.10.3  聲明器中的優先級 230

9.11  函數指針和數組 233

9.11.1  函數指針 233

9.11.2  使用函數指針 234

9.11.3  函數指針數組 235

9.11.4  函數指針的運用 236

9.11.5  函數指針和數組例題 237

第10章  字符串 239

10.1  字符串和字符指針 239

10.1.1  字符數組和指針 241

10.1.2  使用指針處理字符串 242

10.2  const關鍵字 243

10.2.1  使用const修飾數組元素 244

10.2.2  使用const修飾指針所指向的數據 244

10.2.3  使用const修飾指針本身 245

10.2.4  使用const修飾基本變量 246

10.3  字符串處理函數 246

10.3.1  strlen函數:獲取字符串長度 246

10.3.2  strcat函數:拼接字符串 247

10.3.3  strcpy函數:復制字符串 248

10.3.4  strcmp函數:比較字符串 249

10.4  實現字符串處理函數 250

10.4.1  mstrlen函數 250

10.4.2  mstrcat函數 252

10.4.3  mstrcpy函數 254

10.4.4  mstrcmp函數 255

第11章  復合數據 258

11.1  結構化數據 258

11.1.1  使用數組存儲數據 259

11.1.2  交互式程序 261

11.1.3  數據聚合 263

11.2  結構體 266

11.2.1  結構體別名 267

11.2.2  初始化結構體 269

11.2.3  結構體數組 269

11.2.4  嵌套結構 270

11.2.5  指向結構體的指針 271

11.2.6  結構體在函數中傳遞 271

11.2.7  結構體例題 273

11.3  聯合體 274

11.3.1  聯合體的性質 276

11.3.2  聯合體的應用 276

11.4  枚舉 280

第12章  作用域和預處理器 283

12.1  標識符作用域 283

12.1.1  塊作用域 284

12.1.2  函數作用域 288

12.1.3  文件作用域 289

12.2  預處理指令 290

12.2.1  預處理指令的概念 290

12.2.2  #define 預處理指令的用法 292

12.2.3  帶參數的#define 293

12.2.4  宏函數的運算符 295

12.2.5  取消宏定義 298

12.3  typedef關鍵字 299

12.3.1  typedef關鍵字的概念 299

12.3.2  typedef和struct的關系 300

12.3.3  typedef與#define的區別 301

12.3.4  提高整型可移植性 302

12.4  條件編譯 303

12.4.1  #if指令 303

12.4.2  #else指令 304

12.4.3  #elif指令 305

12.4.4  #ifdef指令和#ifndef指令 306

第13章  多文件代碼和存儲類別 309

13.1  多文件代碼 309

13.1.1  預處理指令#include 309

13.1.2  多文件代碼 310

13.2  更復雜的多文件代碼 316

13.2.1  多文件代碼實現 316

13.2.2  頭文件守衛 322

13.3  存儲類別 324

13.3.1  自動變量 325

13.3.2  靜態變量 326

第14章  文件操作 332

14.1  創建和寫入文件 332

14.1.1  fopen函數 333

14.1.2  fprintf函數 334

14.1.3  fclose函數 334

14.1.4  文本模式與二進制模式 335

14.2  讀取文件 337

14.2.1  fscanf函數 337

14.2.2  fgetc函數 338

14.2.3  判斷文件狀態 339

14.2.4  fgets函數 340

14.3  寫入文件 341

14.3.1  fputc函數 342

14.3.2  fputs函數 343

14.3.3  fflush函數 345

14.3.4  文件偏移 346

14.3.5  更新文件 348

14.4  更多操作方式 350

14.4.1  以二進制形式保存數據 350

14.4.2  從文件中讀取二進制數據 354

第15章  位操作、動態內存管理和主函數參數 357

15.1  位操作 357

15.1.1  十進制轉二進制 357

15.1.2  十進制轉二進制函數 358

15.1.3  位運算符 361

15.1.4  左移和右移 365

15.2  動態內存管理 366

15.2.1  變長數組 367

15.2.2  申請內存空間 368

15.2.3  釋放內存空間 370

15.2.4  從函數中返回指針 371

15.3  主函數參數 373

15.3.1  ping命令 373

15.3.2  main函數參數 375

15.3.3  使用主函數參數 375