內容簡介
本書全面介紹了C語言的各種特性,包括C11中增加的內容。書中包含大量完整的示例及詳細的講解。無論是否擁有編程經驗,你都可以通過本書透徹地理解C語言。每章最後附有習題,便於課堂學習或自學。
圖書目錄
前言 1
1 基礎知識 5
2 編譯和運行第一個程式 13
3 變數、數據類型和算術表達式 23
4 程式循環 45
5 做出決策 69
6 使用數組 101
7 使用函式 127
8 使用結構體 175
9 字元串 205
10 指針 247
11 位運算 295
12 預處理器 317
13 用枚舉數據類型、類型定義和數據類型轉換擴展數據類型 341
14 處理大型程式 353
15 C語言中的輸入與輸出操作 369
16 其他及高級特性 397
17 調試程式 415
18 面向對象程式設計 437
附錄A C語言概要 453
附錄B 標準C語言庫 497
附錄C 用gcc編譯程式 525
附錄D 常見編程錯誤 527
附錄E 資源 533
目錄
前言 1
1 基礎知識 5
程式設計 5
高級語言 6
作業系統 7
編譯程式 7
集成開發環境 10
語言解釋器 11
2 編譯和運行第一個程式 13
編譯程式 14
運行程式 14
理解第一個程式 15
顯示變數的值 17
注釋 19
練習 21
3 變數、數據類型和算術表達式 23
理解數據類型和常量 23
整數類型int 24
浮點數值類型float 25
擴展精度類型double 26
單字元類型char 26
布爾數據類型_Bool 27
類型說明符:long、long long、short、unsigned和signed 28
使用變數 31
使用算術表達式 33
整數算術及一元減運算符 36
運算與賦值相結合:賦值運算符 42
_Complex和_Imaginary類型 43
練習 43
4 程式循環 45
三角數 45
for語句 46
關係運算符 48
輸出的對齊 52
程式輸入 53
嵌套for循環 55
for循環的變體 57
while語句 59
do語句 63
break語句 65
continue語句 65
練習 66
5 做出決策 69
if語句 69
if-else構造 73
複合關係測試 76
嵌套if語句 79
else if構造 81
switch語句 88
布爾變數 91
條件運算符 96
練習 97
6 使用數組 101
定義數組 102
以數組元素為計數器 106
生成斐波那契數 109
用數組生成質數 111
初始化數組 113
字元數組 115
使用數組的基數變換 116
const限定符 118
多維數組 120
變長數組 122
練習 124
7 使用函式 127
定義函式 127
參數和局部變數 131
函式原型聲明 132
自動局部變數 132
返回函式結果 134
函式調用 139
聲明返回類型和參數類型 142
檢查函式參數 144
自上而下的程式設計 146
函式與數組 146
賦值運算符 151
數組排序 152
多維數組 155
全局變數 161
自動變數與靜態變數 165
遞歸函式 168
練習 171
8 使用結構體 175
結構體的基礎知識 175
用於存儲日期的結構體 176
在表達式中使用結構體 178
函式與結構體 181
用於存儲時間的結構體 187
初始化結構體 190
複合字面量 191
結構體的數組 192
包含結構體的結構體 196
包含數組的結構體 198
結構體變體 202
練習 203
9 字元串 205
複習字元串的基礎知識 205
字元數組 206
變長字元串 209
字元串的初始化與顯示 211
判斷兩個字元串是否相等 214
輸入字元串 216
單字元輸入 219
空字元串 224
轉義字元 228
再論常量字元串 230
字元串、結構體和數組 231
一種更好的搜尋方法 235
字元操作 240
練習 243
10 指針 247
指針和間接性 247
定義指針變數 248
在表達式中使用指針 252
使用指針和結構體 253
包含指針的結構體 256
鍊表 258
關鍵字const和指針 266
指針和函式 267
指針和數組 273
稍許離題:程式最佳化 277
是數組還是指針? 278
指向字元串的指針 280
常量字元串和指針 282
遞增和遞減運算符回顧 283
指針操作 287
指向函式的指針 288
指針和記憶體地址 289
練習 291
11 位運算 295
位的基礎知識 295
位運算符 297
按位與運算符 297
按位或運算符 300
按位異或運算符 301
二進制求補運算符 301
左移運算符 304
右移運算符 304
移位函式 305
循環移位 307
位段 309
練習 314
12 預處理器 317
#define語句 317
程式可擴展性 322
程式可移植性 323
更高級的定義類型 324
#運算符 330
##運算符 331
#include語句 332
系統包含檔案 335
條件編譯 335
#ifdef、#endif、#else和#ifndef語句 336
#if和#elif預處理器語句 338
#undef語句 339
練習 339
13 用枚舉數據類型、類型定義和數據類型轉換擴展數據類型 341
枚舉數據類型 341
typedef語句 345
數據類型轉換 348
符號擴展 350
參數轉換 350
練習 351
14 處理大型程式 353
將程式分為多個檔案 353
由命令行編譯多個源檔案 354
模組之間的通信 356
外部變數 357
靜態、動態變數與函式 359
有效使用頭檔案 362
其他處理大型程式的實用工具 364
make實用工具 364
cvs實用工具 366
Unix實用工具:ar、grep、sed等 366
15 C語言中的輸入與輸出操作 369
字元I/O:getchar()和putchar() 369
格式化I/O:printf()和scanf() 370
printf()函式 370
scanf()函式 377
檔案輸入與輸出操作 382
將I/O重定向到檔案 382
檔案尾 385
處理檔案的特殊函式 386
fopen函式 387
getc()和putc()函式 389
fclose()函式 389
feof函式 391
fprintf()和fscanf()函式 392
fgets()和fputs()函式 392
stdin、stdout和stderr 393
exit()函式 394
重命名和刪除檔案 395
練習 396
16 其他及高級特性 397
其他語言語句 397
goto語句 397
空語句 398
使用聯合體 399
逗號運算符 402
類型限定符 403
register限定符 403
volatile限定符 403
restrict限定符 404
命令行參數 404
動態記憶體分配 408
calloc()和malloc()函式 409
sizeof運算符 410
free函式 413
練習 414
17 調試程式 415
用預處理器調試 415
用gdb調試程式 422
處理變數 425
源檔案顯示 426
控制程式的執行 427
獲得棧軌跡 432
調試函式,設定數組和結構體 432
用gdb命令獲取幫助 433
雜項 435
18 面向對象程式設計 437
到底什麼是對象? 437
實例與方法 438
編寫一個處理分數的C程式 440
定義一個處理分數的Objective-C類 441
定義一個處理分數的C++類 446
定義一個處理分數的C#類 448
附錄A C語言概要 453
1.0 雙字元組和標識符 453
2.0 注釋 454
3.0 常量 455
4.0 數據類型和聲明 458
5.0 表達式 469
6.0 存儲類和作用域 482
7.0 函式 483
8.0 語句 486
9.0 預處理器 490
附錄B 標準C語言庫 497
標準頭檔案 497
字元串函式 500
記憶體函式 502
字元函式 503
I/O函式 503
記憶體中的格式轉換函式 509
字元串轉換為數字 510
動態記憶體分配函式 512
數學函式 513
複數運算 519
通用函式 521
附錄C 用gcc編譯程式 525
通用命令格式 525
命令行選項 526
附錄D 常見編程錯誤 527
附錄E 資源 533
C程式設計語言 533
C編譯器和集成開發環境 534
其他 535