C語言入門經典, 6/e (Beginning C: From Beginner to Pro, 6/e)

German Gonzalez-Morris,Ivor Horton 童晶、李天群 譯

  • C語言入門經典, 6/e (Beginning C: From Beginner to Pro, 6/e)-preview-1
  • C語言入門經典, 6/e (Beginning C: From Beginner to Pro, 6/e)-preview-2
  • C語言入門經典, 6/e (Beginning C: From Beginner to Pro, 6/e)-preview-3
C語言入門經典, 6/e (Beginning C: From Beginner to Pro, 6/e)-preview-1

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

商品描述

主要內容: 介紹C編程語言; 使用C語言編程,開啟編程之旅; 使用循環、數組、字符串、文本、指針、函數、VO等使用字符串和文本編寫應用程序代碼; 程序的有效結構; 處理數據、文件、工具等

作者簡介

German Gonzalez-Morris是一名C/C++、Java和開發不同應用程序容器的軟件設計師/工程師,特別專注在WebLogic服務器方面的工作。他還從事開發不同的應用程序,包括JEE/Spring/Python。他的工作領域還包括OOP、Java/JEE、Python、設計模式、算法、Spring Core/MVC/Security和微服務。 German曾在消息傳遞性能、RESTful API和事務系統方面工作過。


Ivor Horton是一家從事諮詢業的自營職業者,撰寫編程方面的教程。他在IBM工作多年。 Ivor在IBM的工作包括在各種機器上用大多數語言(如彙編語言和高級語言)編程、實時編程以及設計和實現實時閉環工業控制系統。他在培訓工程師和其他專家學習編程(Fortran、PL/1、APL等)方面有著豐富的經驗。 Ivor是機械、工藝和電子CAD系統、機械CAM系統和DNC/CNC系統方面的專家。

目錄大綱

第1章  C語言編程   1
1.1  C語言   1
1.2  標準庫   2
1.3  學習C語言   2
1.4  創建C程序   2
1.4.1  編輯   2
1.4.2  編譯   3
1.4.3  鏈接   3
1.4.4  執行   4
1.5  創建 個程序   5
1.6  編輯 個程序   5
1.7  處理錯誤   6
1.8  剖析一個簡單的程序   7
1.8.1  註釋   7
1.8.2  預處理指令   8
1.8.3  定義main()函數   9
1.8.4  關鍵字   9
1.8.5  函數體   9
1.8.6  輸出信息   11
1.8.7  參數   11
1.8.8  控制符   11
1.8.9  三字母序列   13
1.9  預處理器   13
1.10  用C語言開發程序   14
1.10.1  了解問題   14
1.10.2  詳細設計   14
1.10.3  實施   15
1.10.4  測試   15
1.11  函數及模塊化編程   15
1.12  常見錯誤   18
1.13  要點   19
1.14  小結   19
1.15  習題   19
第2章  編程初步   21
2.1  計算機的內存   21
2.2  什麼是變量   23
2.3  存儲整數的變量   24
2.3.1  變量的使用   28
2.3.2  變量的初始化   30
2.4  變量與內存   35
2.4.1  帶符號的整數類型   36
2.4.2  無符號的整數類型   36
2.4.3  指定整數常量   37
2.5  使用浮點數   39
2.6  浮點數變量   40
2.6.1  使用浮點數完成除法運算   41
2.6.2  控制輸出中的小數位數   42
2.6.3  控制輸出的字段寬度   42
2.7  較複雜的表達式   43
2.8  定義命名常量   46
2.8.1  極限值   48
2.8.2  sizeof運算符   50
2.9  選擇正確的類型   51
2.10  強制類型轉換   54
2.10.1  自動轉換類型   55
2.10.2  隱式類型轉換的規則   55
2.10.3  賦值語句中的隱式類型轉換   56
2.11  再談數值數據類型   57
2.11.1  字符類型   57
2.11.2  字符的輸入輸出   58
2.11.3  枚舉   61
2.11.4  存儲布爾值的變量   63
2.12  賦值操作的op=形式   64
2.13  數學函數   65
2.14  設計一個程序   66
2.14.1  問題   66
2.14.2  分析   66
2.14.3  解決方案   68
2.15  小結   72
2.16  練習   73
第3章  條件判斷   75
3.1  判斷過程   75
3.1.1  算術比較   76
3.1.2  基本的if語句   76
3.1.3  擴展if語句:if-else   79
3.1.4  在if語句中使用代碼塊   82
3.1.5  嵌套的if語句   82
3.1.6  測試字符   85
3.1.7  邏輯運算符   88
3.1.8  條件運算符   91
3.1.9  運算符的優先級   94
3.2  多項選擇問題   98
3.2.1  給多項選擇使用else-if語句   98
3.2.2  switch語句   99
3.2.3  goto語句   107
3.3  按位運算符   108
3.3.1  按位運算符的op=用法   110
3.3.2  使用按位運算符   111
3.4  設計程序   115
3.4.1  問題   115
3.4.2  分析   115
3.4.3  解決方案   116
3.5  小結   119
3.6  練習   119
第4章  循環   121
4.1  循環概述   121
4.2  遞增和遞減運算符   122
4.3  for循環   122
4.4  for循環的一般語法   126
4.5  再談遞增運算符和遞減運算符   126
4.5.1  遞增運算符   126
4.5.2  遞增運算符的前置和後置形式   127
4.5.3  遞減運算符   127
4.6  再論for循環   128
4.6.1  修改for循環控制變量   130
4.6.2  沒有參數的for循環   131
4.6.3  循環內的break語句   131
4.6.4  使用for循環限制輸入   133
4.6.5  生成偽隨機整數   136
4.6.6  再談循環控制選項   138
4.6.7  浮點類型的循環控制變量   138
4.6.8  字符類型的循環控制變量   139
4.7  while循環   139
4.8  嵌套的循環   142
4.9  嵌套循環和goto語句   147
4.10  do-while循環   148
4.11  continue語句   151
4.12  設計程序   151
4.12.1  問題   151
4.12.2  分析   151
4.12.3  解決方案   152
4.13  小結   163
4.14  習題   163
第5章  數組   165
5.1  數組簡介   165
5.1.1  不用數組的程序   165
5.1.2  什麼是數組   167
5.1.3  使用數組   168
5.2  尋址運算符   171
5.3  數組和地址   173
5.4  數組的初始化   174
5.5  確定數組的大小   175
5.6  多維數組   176
5.7  多維數組的初始化   177
5.8  常量數組   183
5.9  變長數組   185
5.10  設計一個程序   187
5.10.1  問題   187
5.10.2  分析   187
5.10.3  解決方案   188
5.11  小結   194
5.12  習題   195
第6章  字符串和文本的應用   197
6.1  什麼是字符串   197
6.2  存儲字符串的變量   198
6.3  字符串操作   203
6.3.1  檢查對C11/C17的支持   203
6.3.2  確定字符串的長度   205
6.3.3  複製字符串   205
6.3.4  連接字符串   206
6.3.5  比較字符串   209
6.3.6  搜索字符串   213
6.3.7  對字符串進行標記   217
6.3.8  將換行符讀入字符串   221
6.4  分析和轉換字符串   222
6.4.1  轉換字符的大小寫形式   224
6.4.2  將字符串轉換成數值   227
6.5  設計一個程序   229
6.5.1  問題   229
6.5.2  分析   229
6.5.3  解決方案   229
6.6  小結   235
6.7  習題   235
第7章  指針   237
7.1  指針初探   237
7.1.1  聲明指針   238
7.1.2  通過指針訪問值   239
7.1.3  使用指針   242
7.1.4  指向常量的指針   245
7.1.5  常量指針   246
7.1.6  指針的命名   247
7.2  數組和指針   247
7.3  多維數組   250
7.3.1  多維數組和指針   253
7.3.2  訪問數組元素   254
7.4  內存的使用   257
7.4.1  動態內存分配:malloc()函數   258
7.4.2  釋放動態分配的內存   259
7.4.3  用calloc()函數分配內存   263
7.4.4  擴展動態分配的內存   263
7.5  使用指針處理字符串   267
7.5.1  使用指針數組   267
7.5.2  指針和數組記號   274
7.6  設計程序   278
7.6.1  問題   278
7.6.2  分析   278
7.6.3  解決方案   279
7.7  小結   286
7.8  習題   286
第8章  程序的結構   289
8.1  程序的結構概述   289
8.1.1  變量的作用域和生存期   290
8.1.2  變量的作用域和函數   293
8.2  函數   293
8.2.1  定義函數   293
8.2.2  return語句   296
8.3  按值傳遞機制   300
8.4  函數原型   301
8.5  指針用作參數和返回值   302
8.5.1  常量參數   303
8.5.2  返回指針的風險   309
8.6  小結   311
8.7  習題   312
第9章  函數再探   313
9.1  函數指針   313
9.1.1  聲明函數指針   313
9.1.2  通過函數指針調用函數   314
9.1.3  函數指針的數組   316
9.1.4  作為變元的函數指針   318
9.2  函數中的變量   321
9.2.1  靜態變量:函數內部的追踪   321
9.2.2  在函數之間共享變量   323
9.3  調用自己的函數:遞歸   325
9.4  變元個數可變的函數   328
9.4.1  複製va_list   331
9.4.2  長度可變的變元列表的基本規則   331
9.5  main()函數   332
9.6  結束程序   333
9.6.1  abort()函數   333
9.6.2  exit()和atexit()函數   334
9.6.3  _Exit()函數   334
9.6.4  quick_exit()和at_quick_exit()函數   334
9.7  提高性能   335
9.7.1  內聯聲明函數   335
9.7.2  使用restrict關鍵字   335
9.7.3  _Noreturn函數限定符   336
9.8  設計程序   336
9.8.1  問題   336
9.8.2  分析   337
9.8.3  解決方案   338
9.9  小結   352
9.10  習題   352
第10章  基本輸入和輸出操作   355
10.1  輸入和輸出流   355
10.2  標準流   356
10.3  鍵盤輸入   356
10.3.1  格式化鍵盤輸入   356
10.3.2  輸入格式控製字符串   357
10.3.3  輸入格式字符串中的字符   362
10.3.4  輸入浮點數的各種變化   363
10.3.5  讀取十六進制和八進制值   364
10.3.6  用scanf_s()讀取字符   366
10.3.7  從鍵盤上輸入字符串   367
10.3.8  單個字符的鍵盤輸入   368
10.4  屏幕輸出   373
10.4.1  使用printf_s()的格式化輸出   373
10.4.2  轉義序列   375
10.4.3  整數輸出   376
10.4.4  輸出浮點數   378
10.4.5  字符輸出   379
10.5  其他輸出函數   381
10.5.1  屏幕的非格式化輸出   381
10.5.2  數組的格式化輸出   382
10.5.3  數組的格式化輸入   382
10.6  小結   383
10.7  習題   383
第11章  結構化數據   385
11.1  數據結構:使用struct   385
11.1.1  定義結構類型和結構變量   386
11.1.2  訪問結構成員   387
11.1.3未命名的結構   390
11.1.4  結構數組   390
11.1.5  表達式中的結構成員   393
11.1.6  結構指針   393
11.1.7  為結構動態分配內存   394
11.2  再探結構成員   396
11.2.1  將一個結構作為另一個結構的成員   396
11.2.2  聲明結構中的結構   397
11.2.3  將結構指針用作結構成員   399
11.2.4  雙向鍊錶   403
11.2.5  結構中的位字段   406
11.3  結構與函數   407
11.3.1  結構作為函數的變元   407
11.3.2  結構指針作為函數變元   408
11.3.3  作為函數返回值的結構   409
11.3.4  二叉樹   414
11.4  共享內存   422
11.5  設計程序   427
11.5.1  問題   427
11.5.2  分析   427
11.5.3  解決方案   427
11.6  小結   440
11.7  習題   440
第12章  處理文件   441
12.1  文件的概念   441
12.1.1  文件中的位置   442
12.1.2  文件流   442
12.2  文件訪問   442
12.2.1  打開文件   443
12.2.2  緩存文件操作   445
12.2.3  文件重命名   446
12.2.4  關閉文件   446
12.2.5  刪除文件   447
12.3  寫入文本文件   447
12.4  讀取文本文件   448
12.5  在文本文件中讀寫字符串   451
12.6  格式化文件的輸入輸出   455
12.6.1  格式化文件輸出   455
12.6.2  格式化文件輸入   456
12.7  錯誤處理   458
12.8  再探文本文件操作模式   459
12.9  freopen_s()函數   460
12.10  二進製文件的輸入輸出   461
12.10.1  以二進制模式打開文件   462
12.10.2  寫入二進製文件   462
12.10.3  讀取二進製文件   463
12.11  在文件中移動   468
12.11.1  文件定位操作   469
12.11.2  找出文件中的當前位置   469
12.11.3  在文件中設定位置   470
12.12  使用臨時文件   476
12.12.1  創建臨時文件   476
12.12.2  創建 的文件名   477
12.13  更新二進製文件   478
12.13.1  修改文件的內容   483
12.13.2  從鍵盤輸入創建記錄   484
12.13.3  將記錄寫入文件   485
12.13.4  從文件中讀取記錄   486
12.13.5  寫入文件   486
12.13.6  列出文件內容   487
12.13.7  更新已有的文件內容   488
12.14  文件打開模式小結   495
12.15  設計程序   495
12.15.1  問題   495
12.15.2  分析   495
12.15.3  解決方案   496
12.16  小結   501
12.17  習題   501
第13章  預處理器和調試   503
13.1  預處理   503
13.1.1  在程序中包含頭文件   503
13.1.2  定義自己的頭文件   504
13.1.3  管理多個源文件   504
13.1.4  外部變量   504
13.1.5  靜態函數   505
13.1.6  替換程序源代碼   505
13.2  宏   506
13.2.1  看起來像函數的宏   507
13.2.2  字符串作為宏參數   508
13.2.3  在宏展開式中結合兩個
變元   509
13.3  多行上的預處理器指令   510
13.3.1  預處理器邏輯指令   510
13.3.2  條件編譯   510
13.3.3  測試多個條件   511
13.3.4  取消定義的標識符   511
13.3.5  測試標識符的指定值的
指令   511
13.3.6  多項選擇   512
13.3.7  標準預處理宏   513
13.3.8  通用宏   514
13.4  調試方法   515
13.4.1  集成的調試器   515
13.4.2  調試階段的預處理器   515
13.4.3  斷言   519
13.5  日期和時間函數   522
13.5.1  獲取時間值   522
13.5.2  獲取日期   525
13.5.3  確定某一天是星期幾   529
13.6  小結   532
13.7  習題   532
第14章  高級專用主題   533
14.1  使用國際字符集   533
14.1.1  理解Unicode   533
14.1.2  設置區域   534
14.1.3  寬字符類型wchar_t   535
14.1.4  寬字符串的操作   537
14.1.5  寬字符的文件流操作   540
14.1.6  存儲Unicode字符的固定大小類型   541
14.2  用於可移植性的專用整數類型   545
14.2.1  固定寬度的整型   545
14.2.2  Z小寬度的整型   545
14.2.3  Z大寬度的整型   546
14.3  複數類型   546
14.3.1  複數基礎   546
14.3.2  複數類型和操作   547
14.4  用線程編程   550
14.4.1  創建線程   550
14.4.2  退出線程   551
14.4.3  把一個線程連接到另一個線程上   552
14.4.4  掛起線程   555
14.4.5  管理線程對數據的訪問   555
14.5  小結   562
附錄A  計算機中的數學知識   563
附錄B  ASCII字符代碼定義   571
附錄C  C語言中的保留字   575
附錄D  輸入輸出格式說明符   577
附錄E  標準庫頭文件   583