前言 ........................... 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
4.6 類型限定符const、volatile 和restrict ................ 468
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
· · · · · · (
收起)