C語言零起點精進攻略——C/C++入門·提高·精通
定 價:98 元
- 作者:愛編程的魏校長 主編
- 出版時間:2020/3/1
- ISBN:9787122357533
- 出 版 社:化學工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:374
- 紙張:
- 版次:01
- 開本:16開
C語言是學習其他程序設計語言的基礎,也是編寫硬件相關(guān)的嵌入式系統(tǒng)等系統(tǒng)級程序的優(yōu)秀工具。本書從貼近CPU和內(nèi)存原理的角度,給讀者提供了一個學習—實踐—應用C語言的逐步掌握C語言并成為C程序員的技能提升方案。
全書分5篇17章。前3篇分別講述C語言的起步知識、控制程序流程的基礎、編寫基本C代碼的組織工具;第4篇包含了編寫系統(tǒng)級程序所需要的C指針、結(jié)構(gòu)體、編譯預處理等關(guān)鍵知識;第5篇提供了應用C開發(fā)程序所需要的技能和初步實踐方法。
本書可作為高校學生學習C語言的教材和輔助讀物,也可作為中學生參加NOIP競賽的參考書,還能作為初級嵌入式程序員理解C語言的工具書。
第1篇 起步知識
第1章 CPU運行原理和C語言003
1.1 CPU是如何工作的 / 003
1.1.1 指令節(jié)拍和流水線 / 004
1.1.2 摩爾定律讓CPU越來越快 / 004
1.1.3 從CPU指令到程序設計語言 / 006
1.2 理解計算機程序設計 / 006
1.2.1 程序是什么 / 006
1.2.2 程序設計與程序設計語言 / 007
1.2.3 不斷細化問題的結(jié)構(gòu)化程序設計思想 / 007
1.3 C語言的初步知識 / 008
1.3.1 C語言的歷史 / 008
1.3.2 C語言程序的特點 / 009
1.3.3 C語言程序的開發(fā)過程 / 010
1.4 程序生成的工具 / 010
1.4.1 編譯器的概念 / 011
1.4.2 連接器的概念 / 011
1.4.3 項目和Building / 011
1.5 一個簡單的C語言程序 / 012
1.5.1 學習寫第一個C語言程序 / 012
1.5.2 分析C語言程序的組成部分 / 012
1.5.3 運行這個程序 / 013
1.5.4 牛刀小試 / 013
1.5.5 C程序的構(gòu)成 / 014
本章小結(jié) / 014
第2章 C語言基本功015
2.1 了解電腦內(nèi)存的運行方式 / 015
2.1.1 數(shù)據(jù)和代碼都存儲在內(nèi)存中 / 015
2.1.2 任何數(shù)據(jù)都需要標識符才能讀取 / 016
2.2 認識和使用標識符 / 017
2.2.1 標識符的命名規(guī)則 / 017
2.2.2 C語言中標識符的分類 / 018
2.3 什么是變量 / 019
2.3.1 了解變量 / 019
2.3.2 聲明變量 / 019
2.3.3 初始化變量 / 020
2.4 什么是常量 / 020
2.4.1 認識常量 / 020
2.4.2 整型常量 / 021
2.4.3 浮點型常量 / 021
2.4.4 字符型常量 / 022
2.4.5 字符串常量 / 023
2.4.6 符號常量 / 023
2.5 C語言程序中數(shù)據(jù)存儲的基本類型 / 024
2.5.1 存儲整型數(shù)據(jù) / 024
2.5.2 存儲實型數(shù)據(jù) / 027
2.5.3 存儲字符型數(shù)據(jù) / 028
2.6 基于數(shù)學程序運算符和表達式 / 030
2.6.1 在C語句中使用算術(shù)運算符 / 031
2.6.2 賦值運算符 / 032
2.6.3 用自增、自減運算符來進行運算 / 034
2.6.4 逗號運算符 / 035
2.6.5 使用sizeof運算符求變量占用的空間大小 / 035
2.6.6 使用關(guān)系運算符完成條件的選擇 / 037
2.6.7 注意運算符的優(yōu)先級和括號 / 038
2.7 數(shù)據(jù)類型的轉(zhuǎn)換 / 040
2.7.1 隱式自動轉(zhuǎn)換 / 040
2.7.2 顯式強制轉(zhuǎn)換 / 043
本章小結(jié) / 044
第2篇 代碼基礎
第3章 使用順序結(jié)構(gòu)編寫程序047
3.1 語句與表達式 / 047
3.1.1 CPU指令是如何變身匯編語言的 / 047
3.1.2 表達式語句與空語句 / 048
3.1.3 復合語句 / 049
3.2 控制屏幕打印 / 049
3.2.1 使用putchar( )輸出字符 / 049
3.2.2 格式化輸出函數(shù)printf( ) / 050
3.2.3 標準錯誤流 / 052
3.3 讀取鍵盤輸入 / 052
3.3.1 用getchar( ) 函數(shù)輸入字符 / 052
3.3.2 用getch( ) 和getche( ) 函數(shù)輸入 / 053
3.3.3 格式化輸入函數(shù)scanf( ) / 054
3.4 輸入輸出綜合示例 / 057
3.5 操作系統(tǒng)和應用程序 / 057
3.5.1 應用程序在Windows中是如何被執(zhí)行的 / 058
3.5.2 Windows API 和C 運行時庫 / 058
本章小結(jié) / 059
第4章 使用選擇結(jié)構(gòu)編寫程序061
4.1 用邏輯運算符實現(xiàn)選擇結(jié)構(gòu) / 061
4.1.1 邏輯運算符的使用 / 062
4.1.2 邏輯運算符的優(yōu)先級與結(jié)合性 / 063
4.1.3 使用邏輯運算符的程序舉例 / 063
4.2 用if語句實現(xiàn)選擇結(jié)構(gòu) / 064
4.2.1 if語句的使用方法 / 064
4.2.2 使用if語句的程序舉例 / 064
4.2.3 使用if…else 結(jié)構(gòu)實現(xiàn)多項選擇 / 065
4.2.4 使用if…else結(jié)構(gòu)的程序舉例 / 066
4.2.5 if語句的嵌套使用 / 067
4.2.6 使用if語句嵌套的程序舉例 / 069
4.3 用條件運算符實現(xiàn)簡單的選擇結(jié)構(gòu) / 072
4.3.1 CPU只有JUMP指令 / 072
4.3.2 專業(yè)程序員都會錯:懸掛else引發(fā)的問題 / 073
4.3.3 這是語言特性,不是數(shù)學公式 / 074
4.3.4 少用,但可以了解的語言特性 / 074
4.4 多分支條件選擇語句:switch / 076
4.4.1 switch語句的結(jié)構(gòu)介紹 / 076
4.4.2 大多數(shù)人理解的switch語句都是錯的 / 077
4.4.3 多個執(zhí)行結(jié)果共用一個條件 / 079
4.4.4 使用switch語句的程序綜合舉例 / 080
本章小結(jié) / 081
第5章 使用循環(huán)結(jié)構(gòu)編寫程序083
5.1 用while實現(xiàn)帶條件的循環(huán)語句 / 083
5.1.1 while循環(huán)語句的結(jié)構(gòu)和功能 / 083
5.1.2 while循環(huán)語句的程序?qū)嵗?/ 084
5.2 另一種帶條件的循環(huán)語句:do…while / 086
5.2.1 比較do…while與while的差異 / 086
5.2.2 用do…while循環(huán)的程序?qū)嵗?/ 086
5.3 用for 語句實現(xiàn)循環(huán) / 087
5.3.1 for 循環(huán)的結(jié)構(gòu)與功能介紹 / 087
5.3.2 使用for循環(huán)的程序?qū)嵗?/ 088
5.3.3 for 循環(huán)的幾種不同的格式 / 089
5.3.4 在for 語句中添加逗號運算符 / 091
5.4 高級流程控制語句 / 092
5.4.1 用goto 語句在程序中任意跳轉(zhuǎn) / 092
5.4.2 用break 語句中斷循環(huán) / 093
5.4.3 用continue 語句跳出當前循環(huán) / 094
5.5 各種循環(huán)語句的嵌套使用 / 096
本章小結(jié) / 098
第3篇能力提高
第6章 用函數(shù)把程序分塊101
6.1 函數(shù)的概念 / 101
6.1.1 明白什么是函數(shù) / 101
6.1.2 使用函數(shù)的好處 / 102
6.1.3 main()函數(shù)的概念及用途 / 102
6.2 函數(shù)的定義 / 102
6.2.1 自己定義一個函數(shù) / 102
6.2.2 定義一個有參函數(shù) / 104
6.2.3 函數(shù)的參數(shù) / 105
6.2.4 函數(shù)的返回值 / 106
6.2.5 空函數(shù) / 108
6.3 函數(shù)的調(diào)用原理與聲明 / 108
6.3.1 函數(shù)的聲明 / 108
6.3.2 函數(shù)調(diào)用表達式 / 109
6.3.3 函數(shù)調(diào)用的方式 / 109
6.3.4 不加()的函數(shù)調(diào)用會出現(xiàn)什么 / 111
6.3.5 嵌套調(diào)用 / 111
6.3.6 函數(shù)在結(jié)構(gòu)化程序設計中的意義 / 112
6.4 遞歸函數(shù) / 113
6.5 變量的作用域和存儲類別 / 116
6.5.1 什么是變量的作用域 / 116
6.5.2 塊結(jié)構(gòu) / 117
6.5.3 局部變量和局部變量的作用域 / 117
6.5.4 全局變量和全局變量的作用域 / 118
6.5.5 變量的存儲類別 / 119
6.5.6 靜態(tài)變量存儲 / 119
6.5.7 自動變量存儲 / 121
6.6 內(nèi)部函數(shù)與外部函數(shù) / 122
6.6.1 內(nèi)部函數(shù) / 122
6.6.2 外部函數(shù) / 124
本章小結(jié) / 125
第7章 數(shù)組127
7.1 數(shù)組的概念及內(nèi)存占用 / 127
7.1.1 數(shù)組的概念 / 127
7.1.2 數(shù)組在內(nèi)存中的存儲 / 128
7.1.3 數(shù)組的溢出 / 129
7.2 一維數(shù)組 / 129
7.2.1 一維數(shù)組的定義 / 130
7.2.2 一維數(shù)組的初始化 / 130
7.2.3 一維數(shù)組元素的引用 / 131
7.2.4 一維數(shù)組的應用實例 / 132
7.3 二維數(shù)組 / 132
7.3.1 二維數(shù)組的定義 / 133
7.3.2 二維數(shù)組的初始化 / 134
7.3.3 二維數(shù)組元素的引用 / 134
7.3.4 二維數(shù)組的應用實例 / 135
7.4 字符數(shù)組 / 136
7.4.1 字符數(shù)組的定義 / 136
7.4.2 字符串與字符數(shù)組 / 136
7.4.3 字符數(shù)組的初始化 / 137
7.4.4 字符數(shù)組的輸入和輸出 / 137
7.4.5 使用scanf( ) 函數(shù)接收字符串 / 138
7.4.6 字符數(shù)組的應用 / 139
7.5 字符數(shù)組元素作為函數(shù)參數(shù) / 140
7.6 數(shù)組在程序中的實際應用舉例 / 141
7.7 數(shù)組的專業(yè)用法 / 143
本章小結(jié) / 146
第8章 控制字符串147
8.1 字符串的長度 / 147
8.2 使用字符串拷貝函數(shù) / 148
8.2.1 strcpy( )函數(shù)的使用 / 148
8.2.2 strncpy( ) 函數(shù)的使用 / 149
8.3 字符串連接函數(shù) / 150
8.3.1 用strcat( ) 連接字符串 / 150
8.3.2 用strncat( ) 連接字符串 / 151
8.4 使用字符串比較函數(shù) / 151
8.4.1 兩個完整的字符串之間的比較 / 152
8.4.2 兩個字符串的一部分進行比較 / 153
8.4.3 忽略大小寫的字符串比較 / 154
8.5 字符串查找函數(shù) / 155
8.5.1 用strchr( )函數(shù)查找字符串 / 155
8.5.2 用strrchr( )函數(shù)查找字符串 / 156
8.5.3 用strcspn( )函數(shù)查找字符串 / 156
8.5.4 用strspn( )函數(shù)查找字符串 / 156
8.5.5 用strpbrk( )函數(shù)查找字符串 / 157
8.5.6 用strstr( )函數(shù)查找字符串 / 158
8.6 其他的字符串處理函數(shù) / 159
8.6.1 strrev( ) 函數(shù)的使用 / 159
8.6.2 strset( )和strnset函數(shù)的使用 / 160
8.7 字符檢查函數(shù) / 161
8.7.1 數(shù)字檢查函數(shù)isdigit( ) / 161
8.7.2 字母檢查函數(shù)isalpha( ) / 161
8.7.3 檢查函數(shù)的使用 / 161
8.8 將字符串轉(zhuǎn)換成數(shù)字 / 162
本章小結(jié) / 163
第4篇 C之精華
第9章 指針167
9.1 指針與地址 / 167
9.1.1 變量的地址與指針 / 167
9.1.2 了解指針 / 168
9.2 存放地址的指針變量 / 169
9.2.1 定義指針變量 / 169
9.2.2 用變量的地址初始化指針 / 170
9.2.3 置“空”指針變量 / 171
9.2.4 指針變量的引用 / 171
9.3 指針變量進行算數(shù)運算 / 172
9.3.1 指針變量的加減運算 / 172
9.3.2 指針變量的關(guān)系運算 / 174
9.4 指針與函數(shù)的關(guān)系 / 175
9.4.1 指針作為參數(shù) / 175
9.4.2 指針作為返回值 / 177
9.4.3 函數(shù)指針 / 179
9.5 數(shù)組與指針 / 180
9.5.1 指針數(shù)組的定義和引用 / 181
9.5.2 一維數(shù)組中元素的指針表示法 / 181
9.5.3 二維數(shù)組的指針表示法 / 182
9.5.4 指針與字符串結(jié)合使用 / 183
9.5.5 命令行參數(shù) / 185
9.6 指向指針變量的指針 / 186
本章小結(jié) / 187
第10章 結(jié)構(gòu)體、共同體與引用189
10.1 結(jié)構(gòu)體的定義與引用 / 189
10.1.1 結(jié)構(gòu)體類型的定義 / 190
10.1.2 結(jié)構(gòu)體類型變量的定義 / 191
10.1.3 結(jié)構(gòu)體類型變量的初始化 / 192
10.1.4 結(jié)構(gòu)體類型變量的引用 / 193
10.1.5 結(jié)構(gòu)體類型的指針 / 194
10.1.6 結(jié)構(gòu)體數(shù)組 / 196
10.1.7 在結(jié)構(gòu)中包含其他結(jié)構(gòu) / 199
10.1.8 結(jié)構(gòu)與函數(shù)的關(guān)系 / 201
10.2 共用體的定義與引用 / 203
10.2.1 共用體類型的定義 / 203
10.2.2 共用體類型變量的定義 / 204
10.2.3 共用體類型變量的引用 / 205
10.2.4 共用體類型數(shù)據(jù)的特點 / 206
10.3 用typedef定義一個引用變量 / 207
10.4 枚舉型數(shù)據(jù)類型 / 208
10.4.1 枚舉型的定義 / 208
10.4.2 枚舉變量的定義與賦值 / 209
10.5 在程序中實際應用結(jié)構(gòu)體 / 210
本章小結(jié) / 212
第11章 預處理命令213
11.1 認識預處理命令 / 213
11.2 包含其他文件的命令 / 214
11.3 宏定義 / 216
11.3.1 不帶參數(shù)的宏 / 216
11.3.2 帶參數(shù)的宏 / 217
11.3.3 宏的取消 / 219
11.3.4 使用宏定義的優(yōu)缺點 / 219
11.4 條件編譯 / 221
11.5 頭文件的編寫 / 223
本章小結(jié) / 225
第5篇 開發(fā)實踐
第12章 編程規(guī)范和項目開發(fā)初步229
12.1 為什么需要建立編程規(guī)范 / 229
12.2 基本的編碼規(guī)范 / 230
12.2.1 命名規(guī)范 / 230
12.2.2 格式規(guī)范 / 232
12.2.3 函數(shù)規(guī)范 / 233
12.2.4 其他規(guī)范 / 235
12.3 小組開發(fā)規(guī)范 / 235
12.3.1 系統(tǒng)設計 / 236
12.3.2 軟件架構(gòu)設計 / 236
12.3.3 項目進程與人員配置 / 237
12.4 C++帶來的C提升 / 238
本章小結(jié) / 239
第13章 管理計算機內(nèi)存241
13.1 分配內(nèi)存的存儲空間 / 241
13.1.1 使用malloc( ) 函數(shù)分配 / 242
13.1.2 使用calloc( ) 函數(shù)分配 / 243
13.1.3 realloc( ) 函數(shù)的使用 / 245
13.1.4 malloc( ) 和calloc( ) 函數(shù)的區(qū)別 / 246
13.1.5 調(diào)用free( ) 函數(shù)釋放內(nèi)存 / 246
13.2 將數(shù)據(jù)按位運算 / 247
13.2.1 位運算符 / 248
13.2.2 將數(shù)據(jù)進行移位運算 / 248
13.2.3 將數(shù)據(jù)進行按位邏輯運算 / 250
本章小結(jié) / 257
第14章 文件操作259
14.1 打開、關(guān)閉和檢測文件 / 259
14.1.1 打開文件 / 260
14.1.2 文件檢查函數(shù) / 264
14.1.3 讀寫文件數(shù)據(jù) / 264
14.1.4 關(guān)閉文件 / 274
14.2 文件定位函數(shù) / 274
14.2.1 fseek( ) 函數(shù) / 275
14.2.2 ftell( ) 函數(shù) / 277
14.2.3 rewind( ) 函數(shù) / 278
14.3 文件管理函數(shù)的應用 / 280
14.3.1 刪除文件 / 280
14.3.2 重命名文件 / 281
14.4 使用臨時文件 / 282
14.5 非緩沖文件系統(tǒng) / 283
14.5.1 open( ) 函數(shù) / 283
14.5.2 close( ) 函數(shù) / 284
14.5.3 create( ) 函數(shù) / 284
14.5.4 read( ) 函數(shù) / 284
14.5.5 write( ) 函數(shù) / 284
14.5.6 lseek( ) 函數(shù) / 285
本章小結(jié) / 285
第15章 C語言中的庫函數(shù)287
15.1 處理數(shù)學問題 / 287
15.1.1 使用三角函數(shù) / 288
15.1.2 使用指數(shù)函數(shù)和對數(shù)函數(shù) / 290
15.1.3 使用雙曲線函數(shù) / 291
15.1.4 使用其他數(shù)學函數(shù) / 292
15.2 處理時間的函數(shù) / 293
15.2.1 C語言程序中時間的表示 / 294
15.2.2 使用時間函數(shù) / 294
15.3 查找和排序函數(shù) / 302
15.3.1 用bsearch( ) 查找 / 303
15.3.2 用qsort( ) 排序 / 303
15.3.3 排序和查找的程序?qū)嵗?/ 303
15.4 隨機數(shù)生成函數(shù) / 307
15.4.1 隨機數(shù)產(chǎn)生的過程 / 307
15.4.2 隨機數(shù)相關(guān)的函數(shù) / 307
本章小結(jié) / 310
第16章 應用數(shù)據(jù)結(jié)構(gòu)311
16.1 單鏈表 / 311
16.1.1 單鏈表的概念 / 311
16.1.2 單鏈表的創(chuàng)建 / 312
16.1.3 單鏈表的使用 / 315
16.2 棧 / 320
16.2.1 棧的概念 / 320
16.2.2 棧的基本運算 / 321
16.2.3 鏈棧 / 321
16.3 隊列 / 323
16.3.1 隊列的概念 / 323
16.3.2 隊列的基本運算 / 323
16.3.3 鏈隊列 / 324
16.4 快速排序函數(shù) / 326
本章小結(jié) / 329
第17章 學生管理系統(tǒng)的開發(fā)331
17.1 學生管理系統(tǒng)需求分析 / 331
17.2 學生管理系統(tǒng)界面設計 / 332
17.3 學生管理系統(tǒng)功能設計 / 334
17.3.1 學生管理系統(tǒng)概要設計 / 334
17.3.2 用戶登錄管理模塊的設計 / 335
17.3.3 文件讀寫模塊的設計 / 337
17.3.4 學生信息顯示模塊設計 / 340
17.3.5 學生人員增加模塊的設計 / 340
17.3.6 學生人員刪除模塊的設計 / 341
17.3.7 學生信息修改模塊的設計 / 342
17.3.8 學生信息查詢模塊的設計 / 344
17.3.9 主菜單模塊的設計 / 345
17.3.10 主函數(shù)及錯誤處理模塊的設計 / 347
17.3.11 結(jié)構(gòu)體及宏定義 / 348
17.4 學生管理系統(tǒng)測試用例編寫 / 349
17.5 學生管理系統(tǒng)整合測試 / 353
17.5.1 主菜單和界面顯示功能測試演示 / 353
17.5.2 用戶登錄功能測試的演示 / 353
17.5.3 用戶改密碼功能測試的演示 / 354
17.5.4 學生人員增加功能測試的演示 / 355
17.5.5 學生人員信息刪除功能測試的演示 / 355
17.5.6 學生人員信息查詢功能測試的演示 / 356
17.5.7 學生人員信息修改功能測試的演示 / 356
17.5.8 文件讀寫功能測試的演示 / 356
本章小結(jié) / 357
附錄 Visual C++開發(fā)調(diào)試環(huán)境359
一、 Visual C++開發(fā)環(huán)境的安裝和使用 / 359
二、 VC6開發(fā)控制臺程序 / 360
三、 Win32控制臺程序的創(chuàng)建、編譯和運行 / 361
四、 程序出錯及錯誤處理原則 / 365
五、 調(diào)試方法 / 372