C語言開發技術詳解

C語言開發技術詳解

《C語言開發技術詳解》是2009年電子工業出版社出版的書籍,作者是戴建華。

基本介紹

  • 書名:C語言開發技術詳解
  • 作者:戴建華 等
  • ISBN:9787121084904
  • 類別:計算機,編程,C語言
  • 頁數:576頁
  • 定價:66.00元(含光碟1張)
  • 出版社電子工業出版社
  • 出版時間:2009年5月1日
宣傳語,前言,目錄,

宣傳語

該書特色:
從入門到精通:上篇介紹C語言基礎,下篇介紹了C語言的高級程式設計技巧。
適用雙作業系統:Windows+Linux環境。
循序漸進:本書編寫順序按C語言的知識點循序漸進地介紹。
實例豐富,講解詳細:386個實例,方便讀者理解相應的知識點。

前言

C語言從產生到現在,已經成為最重要和最流行的程式語言之一。《C語言開發技術詳解》分上下兩篇,分別介紹了C語言的基礎和高級程式設計技巧。該書內容豐富、結構清晰、實例代碼講解詳盡,可以作為C語言、Java語言初學者的入門教材,也可作為C程式設計師的參考手冊,同時,還可作為大中專院校學生及電腦培訓班的參考書。
引子:C語言作為一門最通用的語言,在過去很流行,將來依然會如此。幾乎每一個理工科或者其他專業的學生毫不例外地要學習它。記得大學裡,很多學校都把譚浩強教授的《C程式設計》作為入門教材,這是絕佳的選擇。然而,要更進一步,更全面而深入地學習呢?顯然有點力不從心。本書正是為了彌補這個缺憾而寫的,希望能對想比較全面而深入學習C語言程式設計的人有所幫助。
從C語言產生到現在,它已經成為最重要和最流行的程式語言之一。在各種流行程式語言中,都能看到C語言的影子,如Java的語法與C語言基本相同。學習、掌握C語言是每一個計算機技術人員的基本功之一。
C語言具有高級語言的強大功能,卻又有很多直接操作計算機硬體的功能(這些都是彙編語言的功能),因此,C語言通常又被稱為中級語言。學習和掌握C語言,既可以增進對於計算機底層工作機制的了解,又為進一步學習其他高級語言打下了堅實的基礎。
本書特點
從入門到精通:本書分上下兩篇,上篇針對初學者,從C語言的基礎開始,使略有計算機基礎的人都能容易地學會C語言編程。下篇則介紹了C語言的高級程式設計技巧,包括常用算法、底層控制滑鼠、繪圖、加密、壓縮等套用。
適用多種作業系統:本書實例都通過GCC編譯器調試,讀者不僅可在Windows環境下使用本書學習C語言,也可在Linux環境下使用本書學習C語言。
循序漸進:本書編寫順序按C語言的知識點循序漸進地介紹。例如,先介紹數據的存儲,再介紹數據的輸入/輸出;先介紹簡單的程式設計概念,再介紹指針等C語言的難點。
重點突出:指針是C語言的重點和難點,本書用了大量的篇幅,從不同方面對其進行講解,並列舉了大量的實例,幫助讀者理解並掌握指針。
實例豐富,講解詳細:學習程式設計時,必須要多上機操作。本書對每個知識點都配有實例代碼,並對實例代碼進行了詳細地講解,在實例後,一般都附有實例程式的運行結果,方便讀者對比理解相應的知識點。
注重實用:在本書下篇,詳細介紹了數據加密、壓縮、控制滑鼠、繪製圖形等實用程式。通過這些內容,可進一步提高讀者C語言的套用能力。
實用超值的DVD光碟:為幫助讀者更深入地學習,本書附贈DVD光碟1張,內容包括本書所有的章節實例,入門視頻以及長達21小時的C語言學習視頻教學課件,講解關鍵知識點界面操作,手把手教會讀者使用。
本書內容
本書分上下兩篇,共26章,上篇共16章,主要介紹C語言的語法基礎;下篇共10章,主要介紹C語言的高級程式設計。各章內容如下:
第1章為C語言概述,介紹了C語言的發展、特點,C語言程式的開發過程,最後,以一個簡單的C程式,演示了編寫C語言程式的方法。
第2章介紹了一個完整的C程式各部分的含義。
第3章介紹了C語言幾種常見的開發環境,包括Dev-C++、Visual C++、Linux下C語言開發環境的使用等內容。
第4章介紹了C語言數據的表示方法,包括數據的存儲、常量變數、整數類型、字元類型、實數類型、混合運算及類型轉換、C99新增數據類型等內容。
第5章詳細介紹C語言中的表達式、各種運算符及運算優先權、C語言各類語句等內容。
第6章介紹了格式化輸入/輸出函式的使用,包括printf函式、scanf函式、getchar函式、getch函式、gets函式、putch函式、puts函式等的使用。
第7章介紹C語言分支結構程式設計的方法,包括使用if語句、嵌套if語句、if else if語句、switch語句等進行多種分支程式設計的內容。
第8章介紹C語言循環結構程式設計的方法,包括使用編寫while循環、for循環,以及循環嵌套等內容。
第9章介紹在C語言中使用數組的方法,主要介紹了一維數組二維數組、字元數組和字元串的使用。
第10章介紹在C語言中創建和使用函式的方法,包括函式的概念、編寫函式、設定函式的參數、函式調用、遞歸函式的編寫等內容。
第11章介紹模組化程式設計方法,包括模組化程式設計概念、C程式的組織、變數作用域、變數的存儲類型等內容。
第12章介紹C語言中指針的使用,指針是C語言最顯著的特徵。本章首先介紹變數在記憶體中的保存形式,然後介紹了指針和簡單變數、指針和數組、指向多維數組的指針、指針和字元串、指針數組、指針和函式等內容。
第13章介紹結構、聯合和枚舉,包括結構的概念、結構的嵌套、結構數組、結構指針、向函式傳遞結構、聯合、枚舉等內容。
第14章介紹位運算位域的使用,通過位運算符,可以方便地操作二進制位。
第15章介紹檔案輸入/輸出的方法,主要介紹了數據流的概念、檔案的打開與關閉、從檔案中讀寫字元、從檔案中讀寫字元串、二進制檔案的讀寫、檔案檢測函式、檔案的隨機讀寫、管理緩衝區、輸入/輸出的重定向、檔案管理等內容。
第16章介紹編譯預處理,包括宏定義命令、條件編譯、其他預處理命令內聯函式等內容。
第17章介紹處理字元串的方法,包括字元串的存儲、字元和字元串檢測函式、查找字元串、比較字元串、連線字元串、複製字元串、字元和字元串的轉換等內容。
第18章介紹C語言的數學函式和時間函式,使用這些函式,可方便地處理數值、日期時間等類型的數據。
第19章介紹常用算法的C語言程式,包括用C語言編寫的完成排序、查找、佇列堆疊鍊表等程式。
第20章介紹用C語言進行存儲管理的方法,包括記憶體動態分配和回收等內容。
第21章介紹用C語言編寫滑鼠的底層操作函式,包括初始化滑鼠、復位滑鼠、顯示滑鼠指針、隱藏滑鼠指針、獲取按鈕信息等操作滑鼠的底層函式。
第22章介紹用C語言編寫數據加密程式的方法,如換位加密法、替換加密法、位加密法等程式的編寫,最後,還簡單介紹了MD5算法。
第23章介紹用C語言編寫數據壓縮程式的方法,首先,介紹了數據壓縮基礎,最後,詳細介紹了LZW壓縮算法的原理及實現過程。
第24章介紹C語言底層圖形函式的編程,首先介紹了顯示系統的基本概念,然後介紹了直接讀取顯存編寫圖形函式的方法,在此基礎上,完成繪製線、圓、矩形、多邊形等函式,最後還介紹了編輯圖形的方法。
第25章介紹GCC調用彙編程式的方法,包括AT&T彙編簡介、GCC內嵌彙編、調用彙編程式等內容。
第26章為一個用C語言編寫的信息管理系統——員工管理系統,通過該實例程式的編寫,可鞏固本書前面各章所學內容。
讀者對象
程式設計初學者入門
大中院校學生
大中院校教師
C程式設計師
電腦培訓班
計算機愛好者
由於計算機技術發展很快,且編者水平和學識有限,書中難免有疏漏之處,敬請廣大讀者朋友批評指正,並多提出寶貴意見。
編 者

目錄

第1篇 C語言基礎
第1章 C語言概述 2
1.1 C語言發展歷史 2
1.1.1 C語言發展過程 2
1.1.2 C語言標準 3
1.2 C語言的特點 4
1.2.1 簡潔緊湊 4
1.2.2 靈活高效 4
1.2.3 強大的控制結構 5
1.2.4 可移植性 5
1.2.5 C語言的缺點 5
1.2.6 C與C++的關係 6
1.3 C語言程式開發過程 6
1.3.1 定義程式目標 6
1.3.2 設計程式 6
1.3.3 編寫原始碼 7
1.3.4 編譯和連結 7
1.3.5 測試 8
1.3.6 維護和修改 8
1.3.7 總結 8
1.4 創建第一個C程式 9
1.4.1 C程式結構 9
1.4.2 輸入程式代碼 9
1.4.3 編譯連結程式 10
1.4.4 調試程式 11
1.4.5 程式語句的含義 12
第2章 C程式的組成 13
2.1 一個完整的C程式 13
2.1.1 分析程式目標 13
2.1.2 設計程式 13
2.1.3 編寫代碼 14
2.1.4 編譯運行程式 15
2.2 C程式的組成 16
2.2.1 包含指令 16
2.2.2 定義常量 16
2.2.3 聲明函式原型 17
2.2.4 main函式 17
2.2.5 程式語句 17
2.2.6 函式定義 18
2.2.7 注釋 18
2.3 C程式組成總結 19
第3章 C語言開發環境 20
3.1 C語言開發環境簡介 20
3.1.1 C語言開發環境的組成 20
3.1.2 常用開發環境 20
3.2 使用Dev-C++ 22
3.2.1 Dev-C++操作界面 22
3.2.2 設定選項 22
3.2.3 用Dev-C++創建C程式 23
3.2.4 編譯程式 24
3.2.5 運行Dev-C++編譯的程式 25
3.3 使用Visual C++ 26
3.3.1 Visual C++操作界面 27
3.3.2 用Visual C++創建C程式 27
3.3.3 編譯程式 29
3.3.4 運行Visual C++生成的程式 30
3.4 Linux C語言開發環境 31
3.4.1 Linux C語言開發環境的構成 31
3.4.2 代碼編輯器 31
3.4.3 GCC編譯器 33
3.4.4 在emacs中編譯C程式 33
3.4.5 在Linux中編寫C程式 34
第4章 數據的表示 37
4.1 數據的存儲 37
4.1.1 記憶體單元 37
4.1.2 字元的存儲 38
4.1.3 數值的存儲 38
4.2 數據類型簡介 39
4.3 常量 40
4.3.1 直接常量 40
4.3.2 符號常量 40
4.4 變數 42
4.4.1 標識符 42
4.4.2 聲明變數 43
4.4.3 變數初始化 45
4.5 整數類型 45
4.5.1 整數類型及存儲 45
4.5.2 整型常量的表示 48
4.5.3 整型數據輸出 50
4.6 字元類型 53
4.6.1 字元常量 53
4.6.2 字元變數及初始化 53
4.6.3 轉義字元 54
4.6.4 字元型數據的輸出 55
4.7 實數類型 56
4.7.1 實數類型及存儲 56
4.7.2 實型常量的表示 58
4.7.3 實型變數 59
4.7.4 實型數據輸出 60
4.8 混合運算及類型轉換 61
4.8.1 混合運算 61
4.8.2 強制數據類型轉換 63
4.9 C99新增數據類型 64
4.9.1 邏輯型(_Bool) 64
4.9.2 複數類型(_Complex和_Imaginary) 64
4.10 總結 65
第5章 表達式運算符和語句 66
5.1 表達式 66
5.1.1 簡單表達式 66
5.2 運算符 67
5.2.1 運算符概述 68
5.2.2 算術運算符 68
5.2.6 位運算符 78
5.2.7 條件運算符 78
5.2.8 其他運算符 80
5.3 表達式的運算順序 81
5.3.2 運算符的結合性 82
5.3.3 自增自減運算符注意事項 83
5.4 語句 84
5.4.1 語句書寫方式 84
5.4.3 空語句 86
5.4.4 複合語句 86
5.4.5 標號語句 87
第6章 格式化輸出/輸入 88
6.1 格式化輸出——printf函式 88
6.1.1 printf函式的格式 88
6.1.2 printf的格式字元 89
6.1.3 修飾符 91
6.1.4 printf函式實例 93
6.1.5 動態設定輸出寬度和精度 98
6.1.6 printf函式的返回值 99
6.1.7 理解輸出列表 99
6.2 格式化輸入——scanf函式 102
6.2.1 scanf函式的格式 102
6.2.2 scanf函式格式字元串 103
6.2.3 scanf函式注意問題 105
6.2.4 scanf函式的返回值 107
6.3 其他常用輸入/輸出函式 107
6.3.1 getchar函式 108
6.3.2 getch函式 108
6.3.3 gets函式 109
6.3.4 putch函式 110
6.3.5 puts函式 110
第7章 分支結構程式設計 112
7.1 分支程式流程 112
7.2 if語句 113
7.2.1 基本if語句 113
7.2.2 if else語句 116
7.2.3 再論條件表達式 117
7.3 嵌套if語句 117
7.3.1 嵌套if語句的形式 117
7.3.2 if語句嵌套實例 118
7.4 if else if語句 122
7.4.1 if else if語句格式 122
7.4.2 if else if實例 123
7.5 多路分支——switch 123
7.5.1 switch語句格式 123
7.5.2 switch實例 125
7.5.3 使用多重標號 126
7.5.4 switch和if比較 129
第8章 循環結構程式設計 130
8.1 循環結構的程式流程 130
8.2 while循環 131
8.2.1 while語句格式 131
8.2.2 理解循環條件 134
8.2.3 理解循環體 135
8.2.4 while循環需注意的問題 137
8.3 for循環 137
8.3.1 for語句格式 138
8.3.2 for語句的各種樣式 139
8.3.3 for語句實例 142
8.4 do while語句 144
8.4.1 while語句不足 144
8.4.2 do while語句格式 146
8.5 循環嵌套 147
8.5.1 了解循環嵌套 147
8.5.2 循環嵌套的結構 149
8.5.3 循環嵌套實例 150
8.6 break和continue語句 154
8.6.1 break語句 154
8.6.2 continue語句 155
8.7 goto語句 157
第9章 使用數組 159
9.1 了解數組 159
9.1.1 使用數組的好處 159
9.1.2 數組的概念 160
9.1.3 數組的維數 161
9.2 一維數組 162
9.2.1 一維數組的聲明 162
9.2.2 一維數組的存儲 164
9.2.3 引用一維數組 165
9.2.4 一維數組的初始化 167
9.3 二維數組 168
9.3.1 二維數組的聲明 169
9.3.2 二維數組的存儲 169
9.3.3 二維數組的初始化 173
9.4 字元數組和字元串 174
9.4.1 字元數組 174
9.4.2 了解字元串 175
9.4.3 字元串的輸入輸出 177
9.5 數組的實例 178
9.5.1 字元串反轉 178
9.5.2 查找最大數 179
9.5.3 數據排序 180
第10章 使用函式 183
10.1 函式的概念 183
10.1.1 函式概念 183
10.1.2 函式的分類 184
10.1.3 定義函式 185
10.1.4 main函式 186
10.2 函式的工作過程 187
10.2.1 程式結構 187
10.2.2 函式執行過程 187
10.3 編寫函式 188
10.3.1 函式頭 188
10.3.2 返回類型 189
10.3.3 參數列表 189
10.3.4 函式體 190
10.3.5 函式原型 190
10.4 函式的參數 192
10.4.1 參數傳遞過程 192
10.4.2 值調用 192
10.4.3 引用調用 194
10.4.4 數組調用 196
10.4.5 main的參數 198
10.5 函式調用 200
10.5.1 函式調用方式 201
10.5.2 被調函式的說明 201
10.5.3 返回函式結果 203
10.5.4 函式的嵌套調用 204
10.6 遞歸函式 205
10.6.1 函式的遞歸調用 205
10.6.2 遞歸的基本原理 207
10.6.3 遞歸函式設計 208
10.6.4 遞歸的優缺點 210
第11章 模組化程式設計方法 211
11.1 模組化程式設計概念 211
11.2 程式模組結構 212
11.2.1 C程式的組織 212
11.2.2 多檔案模組的編譯連結 213
11.2.3 檔案包含 215
11.2.4 內部函式與外部函式 216
11.3 變數的作用域 217
11.3.1 局部變數 217
11.3.2 在複合語句中的變數 218
11.3.3 全局變數 219
11.3.4 全局變數和局部變數同名 222
11.4 變數的存儲類型 223
11.4.1 了解存儲類型 223
11.4.2 自動變數 224
11.4.3 暫存器變數 225
11.4.4 外部變數 226
11.4.5 靜態變數 227
11.5 函式、檔案、變數的關係 229
第12章 使用指針 230
12.1 記憶體和變數 230
12.1.1 計算機記憶體 230
12.1.2 變數的存儲 231
12.2 指針和簡單變數 232
12.2.1 指針的概念 232
12.2.2 創建指針 233
12.2.3 初始化指針 234
12.2.4 使用指針 235
12.2.5 給函式傳遞指針 238
12.3 指針和數組 239
12.3.1 指針、數組和地址間的關係 239
12.3.2 指針運算 241
12.3.3 用指針運算元組元素 242
12.4 指向多維數組的指針 245
12.4.1 理解二維數組的地址 245
12.4.2 多維數組的指針表示 247
12.4.3 指向多維數組的指針變數 248
12.4.4 數組名作為函式的參數 252
12.4.5 指向數組的指針小結 255
12.5 指針和字元串 256
12.5.1 字元串的指針表示 256
12.5.2 字元串指針作函式參數 258
12.5.3 字元數組和字元指針的區別 259
12.6 指針數組 260
12.6.1 指針數組的概念 261
12.6.2 用指針數組處理字元串 263
12.6.3 指針數組作函式參數 264
12.7 指向指針的指針 266
12.7.1 理解指向指針的指針 266
12.7.2 二級指針變數與數組 268
12.8 指針和函式 272
12.8.1 返回指針的函式 272
12.8.2 指向函式的指針 274
12.9 指針和const 276
12.9.1 用const控制指針 277
12.9.2 const的幾種特殊用法 277
12.10 指針總結 278
12.10.1 明確分辨各種指針類型 278
12.10.2 理解指針的4項內容 279
第13章 結構、聯合和枚舉 280
13.1 結構的概念 280
13.1.1 定義結構類型 280
13.1.2 定義結構變數 281
13.1.3 使用結構變數 282
13.2 結構的嵌套 284
13.2.1 包含數組的結構 284
13.2.2 包含指針的結構 285
13.2.3 包含結構的結構 285
13.3 初始化結構變數 288
13.4 結構數組 289
13.4.1 結構數組的定義和引用 290
13.4.2 結構數組的初始化 291
13.4.3 結構數組實例 291
13.5 結構指針 292
13.5.1 定義結構指針 292
13.5.2 使用結構指針 293
13.5.3 用指針處理結構數組 294
13.6 向函式傳遞結構 295
13.6.1 傳遞結構變數的值 295
13.6.2 傳遞結構指針到函式 296
13.7 聯合 297
13.7.1 定義联合類型 297
13.7.2 使用聯合變數 298
13.7.3 在結構中嵌套聯合類型 298
13.8 枚舉 300
13.8.1 定義枚舉類型 300
13.8.2 使用枚舉變數 301
13.9 使用typedef 301
第14章 位運算和位域 303
14.1 了解二進制數 303
14.1.1 數據的存儲 303
14.1.2 整數的二進制表示 304
14.1.3 實數的二進制表示 305
14.1.4 使用其他進制 305
14.2 位運算 307
14.2.1 位邏輯運算符 307
14.2.2 移位運算符 309
14.2.4 位運算的用途 310
14.3 位域 311
14.3.1 定義位域結構 311
14.3.2 位域的使用 312
14.3.3 位域與聯合的使用 314
第15章 檔案輸入/輸出 316
15.1 檔案與數據流 316
15.1.1 程式的輸入/輸出概念 316
15.1.2 流的概念 316
15.1.3 預定義的流 317
15.1.4 檔案的基本概念 317
15.1.5 緩衝檔案系統 318
15.2 檔案的打開與關閉 318
15.2.1 檔案指針 319
15.2.2 打開檔案函式——fopen 319
15.2.3 關閉檔案函式——fclose 321
15.3 從檔案中讀寫字元 322
15.3.1 寫字元函式——putc和fputc 322
15.3.2 讀字元函式——getc和fgetc 323
15.3.3 合併檔案 325
15.4 從檔案中讀寫字元串 326
15.4.1 寫字元串函式——fputs 326
15.4.2 讀字元串函式——fgets 327
15.4.3 檔案格式輸出函式——fprintf 328
15.4.4 檔案格式輸入函式——fscanf 330
15.5 二進制檔案的讀寫 332
15.5.1 寫入整型數據函式——putw 332
15.5.2 讀取整型數據函式——getw 333
15.5.3 寫數據塊函式——fwrite 333
15.5.4 讀數據塊函式——fread 335
15.5.5 檔案檢測函式 337
15.6 檔案的隨機讀寫 337
15.6.1 獲取當前位置函式——ftell 337
15.6.2 重置檔案位置指針函式——rewind 339
15.6.3 設定檔案位置指針——fseek函式 340
15.7 管理緩衝區 342
15.8 輸入/輸出的重定向 343
15.8.1 作業系統的重定向功能 344
15.8.2 重定向輸出 344
15.8.3 重定向函式——freopen 345
15.9 檔案管理 346
15.9.1 重命名檔案 346
15.9.2 刪除檔案 347
15.9.3 複製檔案 348
15.9.4 創建臨時檔案 349
第16章 預處理 351
16.1 預處理簡介 351
16.1.1 預處理功能 351
16.1.2 預處理命令 351
16.2 宏定義命令——#define 352
16.2.1 無參數的宏 352
16.2.2 帶參數的宏 354
16.2.3 預處理操作符#和## 355
16.3 條件編譯 357
16.3.1 使用#if 357
16.3.2 使用#ifdef和#ifndef 359
16.3.3 使用#defined和#undef 360
16.4 其他預處理命令 361
16.4.1 預定義的宏名 361
16.4.2 重置行號和檔案名稱命令——#line 361
16.4.3 修改編譯器設定命令——#pragma 362
16.4.4 產生錯誤信息命令——#error 362
16.5 內聯函式 362
第2篇 C語言高級程式設計
第17章 處理字元串 365
17.1 字元串的存儲 365
17.1.1 字元串的靜態存儲 365
17.1.2 字元串的動態存儲 366
17.2 字元和字元串檢測函式 368
17.2.1 字元檢測函式簡介 368
17.2.2 檢測字元串長度函式——strlen 369
17.3 查找字元串 370
17.3.1 查找字元位置——strchr 370
17.3.2 查找相同字元——strspn 372
17.3.3 查找包含字元位置——strcspn 372
17.3.4 查找包含字元——strpbrk 373
17.3.5 查找子串——strstr 375
17.4 比較字元串 376
17.4.1 比較字元串——strcmp 376
17.4.2 比較部分字元串——memcmp 377
17.4.3 比較時忽略大小寫——stricmp 379
17.5 連線字元串 380
17.5.1 連線字元串——strcat 380
17.5.2 連線部分字元——strncat 382
17.6 複製字元串 383
17.6.1 複製字元串——strcpy 383
17.6.2 複製部分字元——strncpy 384
17.6.3 更省事的複製函式——strdup 385
17.7 字元和字元串的轉換 386
17.7.1 大小寫字元的轉換 386
17.7.2 轉換大小寫字元串 387
17.7.3 字元串與數值的轉換 388
17.8 其他字元串函式 389
17.8.1 字元串反轉——strrev 389
17.8.2 替換字元串中的字元——strset 390
17.8.3 分解字元串——strtok 391
第18章 數學函式和時間函式 393
18.1 數學函式 393
18.1.1 三角函式 393
18.1.2 雙曲三角函式 394
18.1.3 指數函式和對數函式 395
18.1.4 其他數學函式 398
18.2.1 表示日期時間的數據結構 399
18.2.2 獲取日期時間 400
18.2.3 轉換日期時間的表示形式 401
18.2.4 格式化日期時間 404
第19章 常用算法套用 408
19.1 排序 408
19.1.1 排序概述 408
19.1.2 冒泡排序法 409
19.1.3 選擇排序法 410
19.1.4 插入排序法 411
19.1.5 Shell排序法 412
19.1.6 快速排序法 413
19.1.7 字元串的排序 414
19.2 查找 416
19.2.1 順序查找 416
19.2.2 折半查找 417
19.3 佇列 418
19.3.1 佇列的概念 418
19.3.2 佇列的操作 419
19.4 堆疊 422
19.4.1 堆疊的概念 422
19.4.2 堆疊的實現 422
19.5 鍊表 424
19.5.1 鍊表的概念 424
19.5.2 鍊表的基本操作 425
19.5.3 測試鍊表的功能 430
第20章 存儲管理 432
20.1 記憶體組織方式 432
20.1.1 記憶體組織方式 432
20.1.2 堆和棧的比較 433
20.2 C語言的動態存儲管理 434
20.2.1 分配記憶體函式——malloc 434
20.2.2 另一個分配記憶體的函式——calloc 436
20.2.3 調整已分配記憶體——realloc 437
20.2.4 釋放分配的記憶體——free 439
20.2.5 丟失的記憶體 440
第21章 控制滑鼠 442
21.1 滑鼠驅動程式 442
21.1.1 通過中斷訪問滑鼠驅動程式 442
21.1.2 新的開發環境 443
21.1.3 調用中斷服務 444
21.2 滑鼠庫函式 445
21.2.1 定義頭檔案mouse.h 445
21.2.2 通過中斷控制滑鼠 446
21.2.3 初始化滑鼠 447
21.2.4 復位滑鼠 447
21.2.5 移動滑鼠 448
21.2.6 顯示滑鼠指針 448
21.2.7 隱藏滑鼠指針 449
21.2.8 獲取按下按鈕信息 449
21.2.9 獲取釋放按鈕信息 450
21.2.10 獲取滑鼠狀態信息 451
21.2.11 獲取滑鼠指針位置信息 451
21.2.12 保存滑鼠指針位置 452
21.2.13 捕獲鍵盤或滑鼠 452
21.2.14 滑鼠指針區域 453
21.3 滑鼠套用實例 454
21.3.1 了解螢幕函式 454
21.3.2 實例程式 455
第22章 數據加密 458
22.1 密碼技術的概念 458
22.2 加密方法 458
22.2.1 換位加密法 459
22.2.2 替換加密法 462
22.2.3 位加密法 464
22.3 MD5加密簡介 466
22.3.1 MD5簡介 466
22.3.2 MD5算法描述 467
第23章 數據壓縮 469
23.1 數據壓縮基礎 469
23.1.1 數據壓縮概述 469
23.1.2 數據壓縮相關概念 469
23.1.3 常見壓縮算法簡介 470
23.2 LZW原理 471
23.2.1 LZW的相關概念 471
23.2.2 LZW壓縮過程 471
23.2.3 LZW解壓縮過程 473
23.3 LZW實現代碼 473
23.3.1 程式構思 473
23.3.2 定義數據結構 474
23.3.3 壓縮函式 474
23.3.4 搜尋哈希表 476
23.3.5 輸出壓縮數據 477
23.3.6 解壓縮函式 478
23.3.7 輸入編碼數據 480
23.3.8 解碼函式 480
23.3.9 主程式 481
第24章 圖形編程 483
24.1 顯示系統簡介 483
24.1.1 顯示系統基本概念 483
24.1.2 顯示卡種類 484
24.1.3 顯示模式 484
24.2 繪圖基礎 486
24.2.1 設定顯示模式 486
24.2.2 控制顯示緩衝區 487
24.3 圖形函式 488
24.3.1 繪製點 488
24.3.2 讀取點的信息 489
24.3.3 繪製直線 489
24.3.4 繪製矩形 491
24.3.5 繪製圓 492
24.3.6 繪製多邊形 493
24.4 編輯圖形 494
24.4.1 複製圖形 494
24.4.2 移動圖形 495
24.4.3 保存圖形 495
24.4.4 載入圖形 496
第25章 調用彙編程式 498
25.1 AT&T彙編簡介 498
25.1.1 了解彙編的兩種格式 498
25.1.2 將C語言輸出為彙編程式 500
25.2 GCC內嵌彙編 501
25.2.1 基本內聯彙編 501
25.2.2 擴展內聯彙編 501
25.2.3 內聯彙編實例 505
25.3 調用彙編程式 507
25.3.1 C編譯程式的調用約定 507
25.3.2 C語言調用彙編的結構 508
25.3.3 建立彙編函式的框架 509
25.3.4 調用彙編函式 510
第26章 程式設計實例 512
26.1 程式分析 512
26.1.1 模組劃分 512
26.1.2 設計數據結構 513
26.2 頭檔案 514
26.3 主模組 515
26.3.1 main函式 515
26.3.2 檢查初始化狀態 516
26.3.3 檢查登錄密碼 517
26.3.4 從檔案創建鍊表 518
26.3.5 顯示主選單 519
26.3.6 將鍊表保存到檔案 522
26.4 輸入員工信息 523
26.5 查詢員工信息 525
26.5.1 查詢子選單 525
26.5.2 查詢函式 527
26.5.3 通用顯示函式 528
26.6 顯示員工信息 529
26.7 修改員工信息 530
26.7.1 修改子選單 530
26.7.2 修改數據 532
26.8 刪除員工信息 533
26.9 統計員工信息 535
26.10 重設系統密碼 535
附錄A ASCII關鍵字 537
附錄B ANSI C關鍵字 540
實例目錄
【程式1-1】第一個C語言程式 9
【程式2-1】C語言程式組成示例 14
【程式3-1】歡迎程式 25
【程式4-1】符號常量示例 40
【程式4-2】攝氏溫度轉換為華氏溫度 44
【程式4-3】整型數據所占記憶體空間的大小 46
【程式4-4】整型數據輸出示例 51
【程式4-5】整數轉換為十六進制和八進制示例 52
【程式4-6】使用轉義字元示例 55
【程式4-7】字元型數據輸出示例 56
【程式4-8】實數類型占用的位元組示例 57
【程式4-9】實型數據輸出示例1 59
【程式4-10】實型數據輸出示例2 60
【程式4-11】實型數據輸出示例3 61
【程式4-12】char類型和int類型之間的轉換示例 62
【程式4-13】將float轉換為int類型示例 62
【程式4-14】強制類型轉換示例 63
【程式4-15】複數操作示例 64
【程式5-1】輸出逗號表達式的結果 67
【程式5-2】十進制數轉換為二進制數示例(不使用循環) 69
【程式5-3】十進制數轉換為二進制數示例(使用循環) 70
【程式5-4】自增運算符的後綴模式和前綴模式 71
【程式5-5】使用複合賦值運算符 75
【程式5-6】關係運算符示例 76
【程式5-7】邏輯運算符示例 77
【程式5-8】條件運算符示例 79
【程式5-9】使用sizeof運算符 80
【程式6-1】printf函式示例 89
【程式6-2】printf函式不同格式串輸出示例 90
【程式6-3】printf函式輸出最小寬度控制示例 91
【程式6-4】printf函式輸出精度控制示例 92
【程式6-5】printf函式輸出字元示例 94
【程式6-6】printf函式輸出整數示例 95
【程式6-7】printf函式輸出實數示例 96
【程式6-8】printf函式輸出字元串示例 97
【程式6-9】printf函式動態設定輸出寬度和精度示例 98
【程式6-10】printf函式的返回值示例 99
【程式6-11】printf函式輸出列表示例1 100
【程式6-12】printf函式輸出列表示例2 100
【程式6-13】scanf函式示例 102
【程式6-14】scanf函式不能控制輸入精度示例 105
【程式6-15】scanf函式使用非格式字元示例 106
【程式6-16】scanf函式返回值示例 107
【程式6-17】getchar函式示例 108
【程式6-18】getch函式示例 109
【程式6-19】gets函式示例 109
【程式6-20】putch函式示例 110
【程式6-21】puts函式示例 111
【程式7-1】用if語句求最大數 114
【程式7-2】用if語句對兩個數排序 115
【程式7-3】用if else語句對兩個數排序 116
【程式7-4】檢查輸入字元類型示例(if語句嵌套) 119
【程式7-5】三個數排序示例(if語句嵌套方法) 120
【程式7-6】三個數排序示例(交換方法) 121
【程式7-7】檢查輸入字元類型示例(if else if語句) 123
【程式7-8】整數轉換為中文星期名稱(switch語句) 125
【程式7-9】switch語句多重標號示例(錯誤結果) 126
【程式7-10】分檔計算運費(switch語句) 127
【程式8-1】求連續自然數之和示例(while語句,計數器遞增) 132
【程式8-2】求連續自然數之和示例(while語句,計數器遞減) 134
【程式8-3】求連續自然數之和示例(最佳化後的代碼) 135
【程式8-4】求連續自然數之和示例(for語句) 139
【程式8-5】省略初始化部分的for循環示例 139
【程式8-6】改變for循環的循環變數遞增方式示例 141
【程式8-7】用for循環輸出指定期間的字元示例 142
【程式8-8】用for循環輸出ASCII代碼表示例 143
【程式8-9】用while循環顯示選單示例 144
【程式8-10】用do while循環顯示選單示例 146
【程式8-11】循環嵌套輸出示例 148
【程式8-12】九九乘法表 150
【程式8-13】九九乘法表示例(最佳化後的代碼) 151
【程式8-14】百錢買百雞示例(循環嵌套) 152
【程式8-15】百錢買百雞代碼最佳化示例 153
【程式8-16】用break語句跳出循環示例 155
【程式8-17】用continue語句跳過循環部分語句示例 156
【程式8-18】用goto語句編寫循環代碼示例 157
【程式9-1】統計學生成績示例(不使用數組) 159
【程式9-2】統計學生成績示例(使用數組) 160
【程式9-3】使用變長數組示例(C99標準) 163
【程式9-4】越界訪問數組示例 166
【程式9-5】輸出未初始化的數組元素示例 167
【程式9-6】按線性方式輸出二維數組元素示例 170
【程式9-7】輸出數組各元素的記憶體地址示例 171
【程式9-8】字元數組示例 175
【程式9-9】輸出字元數組示例 177
【程式9-10】字元串反轉示例 179
【程式9-11】輸出數組中的最大數示例 180
【程式9-12】數組元素排序示例 181
【程式10-1】求最大值函式示例 185
【程式10-2】函式返回值示例 189
【程式10-3】函式返回值示例 191
【程式10-4】函式的值調用示例 193
【程式10-5】函式的引用調用示例 194
【程式10-6】通過指針傳遞參數示例 195
【程式10-7】函式的數組調用示例 197
【程式10-8】main函式的參數示例 199
【程式10-9】輸出用戶輸入的命令行參數示例 200
【程式10-10】函式嵌套調用示例 204
【程式10-11】函式遞歸調用示例 205
【程式10-12】漢諾塔(遞歸程式示例) 208
【程式11-1】引用多個源程式檔案示例 213
【程式11-2】局部變數示例 217
【程式11-3】複合語句中的變數示例 219
【程式11-4】全局變數示例1 220
【程式11-5】全局變數示例2 221
【程式11-6】同名全局變數局部變數示例 222
【程式11-7】自動變數示例 224
【程式11-8】暫存器變數示例 226
【程式11-9】外部變數示例 226
【程式11-10】靜態變數示例 228
【程式12-1】查看變數地址示例 232
【程式12-2】錯誤初始化指針示例 235
【程式12-3】取地址運算符和取內容運算符示例 236
【程式12-4】用指針引用變數示例 237
【程式12-5】通過指針交換數據示例 237
【程式12-6】指針和數組地址之間的關係示例 240
【程式12-7】用指針操作數組元素示例 242
【程式12-8】將指針作為數組名使用示例 243
【程式12-9】輸出數組的地址和長度示例 245
【程式12-10】輸出數組各維的地址和長度示例 246
【程式12-11】輸出數組各元素的地址和長度示例 247
【程式12-12】初始化二維數組示例 248
【程式12-13】用指針變數初始化二維數組示例 249
【程式12-14】用指針變數指向數組的一行數據示例 251
【程式12-15】一維數組作函式參數示例 253
【程式12-16】使用指向一維數組的指針變數傳遞參數示例 254
【程式12-17】字元串數組、字元串指針使用示例 257
【程式12-18】字元串指針作函式參數示例 258
【程式12-19】用指針數組指向二維數組每一行示例 261
【程式12-20】二維數組指針示例 262
【程式12-21】用指針數組處理字元串示例 263
【程式12-22】指針數組作函式參數示例 264
【程式12-23】指向指針的指針示例 267
【程式12-24】用二級指針操作一維數組示例 268
【程式12-25】用二級指針操作二維數組示例 270
【程式12-26】用二級指針作函式參數示例 271
【程式12-27】指針型函式示例 272
【程式12-28】指向函式的指針示例1 274
【程式12-29】指向函式的指針示例2 275
【程式12-30】指針和const的關係示例 278
【程式13-1】結構和結構變數示例 283
【程式13-2】嵌套結構成員賦值、輸出示例 286
【程式13-3】初始化結構示例 289
【程式13-4】結構數組示例 291
【程式13-5】用指針處理結構數組示例 294
【程式13-6】傳遞結構變數的值到函式示例 295
【程式13-7】結構中嵌套聯合類型示例1 298
【程式13-8】結構中嵌套聯合類型示例2 299
【程式14-1】位或運算示例 308
【程式14-2】位反運算示例 308
【程式14-3】位運算用途示例 310
【程式14-4】位域示例 313
【程式14-5】二進制轉換位域與聯合的使用)示例 314
【程式15-1】保存用戶輸入內容示例 322
【程式15-2】從檔案中讀取字元示例 324
【程式15-3】合併檔案示例 325
【程式15-4】向檔案中增加內容示例 326
【程式15-5】將檔案內容顯示到螢幕示例 328
【程式15-6】格式化檔案數據示例 329
【程式15-7】讀取格式化檔案數據示例 330
【程式15-8】將整型數據寫入檔案示例 332
【程式15-9】從檔案中讀取整型數據示例 333
【程式15-10】保存二進制檔案示例 334
【程式15-11】讀二進制檔案示例 336
【程式15-12】獲取檔案位置指針示例 338
【程式15-13】重置檔案位置指針示例 339
【程式15-14】設定檔案位置指針示例 341
【程式15-15】刷新標準輸入流stdin緩衝區示例 343
【程式15-16】重定向輸出到顯示器示例 344
【程式15-17】重定向輸出到檔案示例 345
【程式15-18】重命名檔案示例 346
【程式15-19】刪除檔案示例 347
【程式15-20】複製檔案示例 348
【程式15-21】臨時檔案使用示例 349
【程式16-1】無參數宏示例 353
【程式16-2】操作符#示例 355
【程式16-3】操作符##示例 356
【程式16-4】條件編譯示例 358
【程式16-5】條件編譯嵌套示例 359
【程式16-6】使用預定宏名示例 361
【程式16-7】#line命令示例 361
【程式16-8】內聯函式示例 363
【程式17-1】字元串動態存儲示例 367
【程式17-2】字元檢測函式示例 368
【程式17-3】字元串長度函式示例 369
【程式17-4】查找字元位置示例 370
【程式17-5】查找相同字元示例 372
【程式17-6】查找包含字元位置示例 373
【程式17-7】查找包含字元示例 374
【程式17-8】查找子串示例 375
【程式17-9】比較字元串示例 376
【程式17-10】比較部分字元串示例 378
【程式17-11】忽略大小寫比較字元串示例 379
【程式17-12】連線字元串示例 381
【程式17-13】連線部分字元示例 382
【程式17-14】複製字元串示例 383
【程式17-15】複製部分字元示例 384
【程式17-16】用dup函式複製字元串示例 385
【程式17-17】大小寫字元轉換示例 386
【程式17-18】字元串大小寫轉換示例 387
【程式17-19】字元串與數值轉換示例 388
【程式17-20】字元串反轉示例 389
【程式17-21】替換字元示例 390
【程式17-22】分解字元串示例 391
【程式18-1】三角函式sin示例 394
【程式18-2】雙三曲函式示例 395
【程式18-3】exp函式示例 396
【程式18-4】用frexp函式分解尾數和指數示例 396
【程式18-5】用ldexp函式組合實數示例 397
【程式18-6】ceil和floor函式示例 398
【程式18-7】modf函式示例 399
【程式18-8】獲取日期時間示例 400
【程式18-9】轉換日期時間表示形式示例 401
【程式18-10】秒數轉換為對應的日期示例 402
【程式18-11】日期轉換為秒數示例 403
【程式18-12】日期轉換為字元串示例 404
【程式18-13】顯示當前日期示例 407
【程式19-1】冒泡排序法示例 409
【程式19-2】選擇排序法示例 411
【程式19-3】插入排序法示例 411
【程式19-4】Shell排序法示例 412
【程式19-5】快速排序法示例 413
【程式19-6】字元串排序示例 414
【程式19-7】順序查找示例 416
【程式19-8】折半查找示例 418
【程式19-9】佇列操作示例 419
【程式19-10】堆疊操作示例 423
【程式19-11】鍊表操作示例 425
【程式20-1】不同類變數分配記憶體空間示例 433
【程式20-2】用malloc函式動態分配記憶體創建動態數組示例 435
【程式20-3】用realloc函式動態分配記憶體示例 437
【程式20-4】用free函式釋放分配記憶體示例 439
【程式20-5】記憶體分配丟失示例 440
【程式20-6】分配所有可用記憶體示例 441
【程式21-1】頭檔案,包含控制滑鼠的函式原型定義 445
【程式21-2】控制滑鼠的函式代碼 446
【程式21-3】初始化滑鼠函式代碼 447
【程式21-4】復位滑鼠函式代碼 447
【程式21-5】移動滑鼠函式代碼 448
【程式21-6】顯示滑鼠指針函式代碼 448
【程式21-7】隱藏滑鼠指針函式代碼 449
【程式21-8】獲取按下按鈕信息函式代碼 450
【程式21-9】獲取釋放按鈕信息函式代碼 450
【程式21-10】獲取滑鼠狀態信息函式代碼 451
【程式21-11】獲取滑鼠指針位置信息函式代碼 451
【程式21-12】保存滑鼠指針位置函式代碼 452
【程式21-13】捕獲滑鼠或鍵盤按鈕函式代碼 453
【程式21-14】判斷滑鼠指針區域代碼 454
【程式21-15】測試滑鼠庫函式的代碼 455
【程式22-1】換位加密法示例 459
【程式22-2】替換加密法示例 463
【程式22-3】位加密法示例 465
【程式23-1】LZW壓縮算法頭檔案 474
【程式23-2】壓縮函式代碼 475
【程式23-3】搜尋哈希表函式代碼 477
【程式23-4】輸出壓縮數據函式代碼 477
【程式23-5】解壓縮函式代碼 478
【程式23-6】輸入編輯數據函式代碼 480
【程式23-7】解壓函式代碼 480
【程式23-8】壓縮主程式代碼 481
【程式24-1】設定顯示模式函式代碼 486
【程式24-2】繪製點的函式代碼(調用BIOS功能) 488
【程式24-3】繪製點的函式代碼(直接存取顯示記憶體) 489
【程式24-4】讀取點信息的函式代碼 489
【程式24-5】繪製直線的函式代碼 490
【程式24-6】繪製矩形的函式代碼 491
【程式24-7】繪製實心矩形的函式代碼 491
【程式24-8】繪製圓的函式代碼 492
【程式24-9】繪製實心圓的函式代碼 493
【程式24-10】繪製多邊形的函式代碼 493
【程式24-11】繪製隨機多邊形的代碼 494
【程式24-12】複製圖形的函式代碼 494
【程式24-13】移動圖形的函式代碼 495
【程式24-14】保存圖形的函式代碼 495
【程式24-15】載入圖形的函式代碼 496
【程式24-16】測試繪製函式的代碼 497
【程式25-1】將C語言編譯為彙編程式示例(C源程式) 500
【程式25-2】將C語言編譯為彙編程式示例(彙編程式) 500
【程式25-3】簡單內聯彙編示例 503
【程式25-4】包含輸入部分的內聯彙編示例 504
【程式25-5】輸出字元串的內聯彙編示例 505
【程式25-6】讀取暫存器值的內聯彙編示例 506
【程式25-7】C語言函式調用約定示例 507
【程式25-8】add函式(C源程式) 508
【程式25-9】add函式編譯後的彙編程式 508
【程式25-10】兩數相乘的彙編程式示例 509
【程式25-11】C語言調用彙編程式示例 510

相關詞條

熱門詞條

聯絡我們