在計算機發(fā)展的歷史上,沒有哪一種程序設(shè)計語言像C語言這樣應(yīng)用如此廣泛。 本書原著即為C語言的設(shè)計者之一Dennis M.Ritchie 和的計算機科學家 Brian W.Kernighan合著的一本介紹C語言的經(jīng)典著作。 我們現(xiàn)在見到的大量論述C語言程序設(shè)計的教材和專著均以此書為藍本。原著第1版中介紹的C語言成為后來廣泛使用的C語言版本--標準C的基礎(chǔ)。人們熟知的"hello,world"程序就是由本書首次引入的,現(xiàn)在,這一程序已經(jīng)成為所有程序設(shè)計語言入門的第一課。
原著第2版根據(jù)1987年制定的ANSI C標準做了適當?shù)男抻,引入?新的語言形式,并增加了新的示例。通過簡潔的描述、典型的示例,作者全面、系統(tǒng)、準確地講述了C語言的各個特性以及程序設(shè)計的基本方法。 對于計算機從業(yè)人員來說,本書是一本必讀的程序設(shè)計語言方面的參考書。
出版者的話
中文版序
譯者序
校譯者簡介
第2版前言
第1版前言
引言
第1章 導言1
1.1 入門1
1.2 變量與算術(shù)表達式3
1.3 for語句8
1.4 符號常量9
1.5 字符輸入/輸出9
1.5.1 文件復制10
1.5.2 字符計數(shù)11
1.5.3 行計數(shù)13
1.5.4 單詞計數(shù)14
1.6 數(shù)組15
1.7 函數(shù)17
1.8 參數(shù)—傳值調(diào)用19
1.9 字符數(shù)組20
1.10 外部變量與作用域22
第2章 類型、運算符與表達式27
2.1 變量名27
2.2 數(shù)據(jù)類型及長度27
2.3 常量28
2.4 聲明31
2.5 算術(shù)運算符32
2.6 關(guān)系運算符與邏輯運算符32
2.7 類型轉(zhuǎn)換33
2.8 自增運算符與自減運算符37
2.9 位運算符38
2.10 賦值運算符與表達式40
2.11 條件表達式41
2.12 運算符優(yōu)先級與求值次序42
第3章 控制流45
3.1 語句與程序塊45
3.2 if-else語句45
3.3 else-if語句46
3.4 switch語句48
3.5 while循環(huán)與for循環(huán)49
3.6 do-while循環(huán)52
3.7 break語句與continue語句53
3.8 goto語句與標號54
第4章 函數(shù)與程序結(jié)構(gòu)57
4.1 函數(shù)的基本知識57
4.2 返回非整型值的函數(shù)60
4.3 外部變量62
4.4 作用域規(guī)則68
4.5 頭文件69
4.6 靜態(tài)變量70
4.7 寄存器變量71
4.8 程序塊結(jié)構(gòu)72
4.9 初始化72
4.10 遞歸73
4.11 C預處理器75
4.11.1 文件包含75
4.11.2 宏替換76
4.11.3 條件包含78
第5章 指針與數(shù)組79
5.1 指針與地址79
5.2 指針與函數(shù)參數(shù)81
5.3 指針與數(shù)組83
5.4 地址算術(shù)運算86
5.5 字符指針與函數(shù)89
5.6 指針數(shù)組以及指向指針的指針92
5.7 多維數(shù)組95
5.8 指針數(shù)組的初始化97
5.9 指針與多維數(shù)組97
5.10 命令行參數(shù)98
5.11 指向函數(shù)的指針102
5.12 復雜聲明105
第6章 結(jié)構(gòu)111
6.1 結(jié)構(gòu)的基本知識111
6.2 結(jié)構(gòu)與函數(shù)113
6.3 結(jié)構(gòu)數(shù)組115
6.4 指向結(jié)構(gòu)的指針119
6.5 自引用結(jié)構(gòu)121
6.6 表查找125
6.7 類型定義(typedef)127
6.8 聯(lián)合128
6.9 位字段130
第7章 輸入與輸出133
7.1 標準輸入/輸出133
7.2 格式化輸出—printf函數(shù)135
7.3 變長參數(shù)表136
7.4 格式化輸入—scanf函數(shù)137
7.5 文件訪問140
7.6 錯誤處理—stderr和exit143
7.7 行輸入和行輸出144
7.8 其他函數(shù)145
7.8.1 字符串操作函數(shù)145
7.8.2 字符類別測試和轉(zhuǎn)換函數(shù)146
7.8.3 ungetc函數(shù)146
7.8.4 命令執(zhí)行函數(shù)146
7.8.5 存儲管理函數(shù)147
7.8.6 數(shù)學函數(shù)147
7.8.7 隨機數(shù)發(fā)生器函數(shù)148
第8章 UNIX系統(tǒng)接口149
8.1 文件描述符149
8.2 低級I/O—read和write150
8.3 open、creat、close和unlink151
8.4 隨機訪問—lseek153
8.5 實例—fopen和getc函數(shù)的實現(xiàn)154
8.6 實例—目錄列表157
8.7 實例—存儲分配程序162
附錄A 參考手冊167
A.1 引言167
A.2 詞法規(guī)則167
A.2.1 記號167
A.2.2 注釋167
A.2.3 標識符167
A.2.4 關(guān)鍵字168
A.2.5 常量168
A.2.6 字符串字面值170
A.3 語法符號170
A.4 標識符的含義170
A.4.1 存儲類171
A.4.2 基本類型171
A.4.3 派生類型172
A.4.4 類型限定符172
A.5 對象和左值172
A.6 轉(zhuǎn)換173
A.6.1 整型提升173
A.6.2 整型轉(zhuǎn)換173
A.6.3 整數(shù)和浮點數(shù)173
A.6.4 浮點類型173
A.6.5 算術(shù)類型轉(zhuǎn)換173
A.6.6 指針和整數(shù)174
A.6.7 void175
A.6.8 指向void的指針175
A.7 表達式175
A.7.1 指針生成176
A.7.2 初等表達式176
A.7.3 后綴表達式177
A.7.4 一元運算符179
A.7.5 強制類型轉(zhuǎn)換180
A.7.6 乘法類運算符180
A.7.7 加法類運算符181
A.7.8 移位運算符181
A.7.9 關(guān)系運算符182
A.7.10 相等類運算符182
A.7.11 按位與運算符183
A.7.12 按位異或運算符183
A.7.13 按位或運算符183
A.7.14 邏輯與運算符183
A.7.15 邏輯或運算符183
A.7.16 條件運算符184
A.7.17 賦值表達式184
A.7.18 逗號運算符185
A.7.19 常量表達式185
A.8 聲明185
A.8.1 存儲類說明符186
A.8.2 類型說明符187
A.8.3 結(jié)構(gòu)和聯(lián)合聲明188
A.8.4 枚舉191
A.8.5 聲明符191
A.8.6 聲明符的含義192
A.8.7 初始化195
A.8.8 類型名197
A.8.9 typedef198
A.8.10 類型等價199
A.9 語句199
A.9.1 帶標號語句199
A.9.2 表達式語句199
A.9.3 復合語句200
A.9.4 選擇語句200
A.9.5 循環(huán)語句201
A.9.6 跳轉(zhuǎn)語句201
A.10 外部聲明202
A.10.1 函數(shù)定義202
A.10.2 外部聲明204
A.11 作用域與連接204
A.11.1 詞法作用域205
A.11.2 連接205
A.12 預處理205
A.12.1 三字符序列206
A.12.2 行連接206
A.12.3 宏定義和擴展206
A.12.4 文件包含208
A.12.5 條件編譯209
A.12.6 行控制210
A.12.7 錯誤信息生成210
A.12.8 pragma210
A.12.9 空指令210
A.12.10 預定義名字211
A.13 語法211
附錄B 標準庫219
B.1 輸入與輸出:
219
B.1.1 文件操作220
B.1.2 格式化輸出221
B.1.3 格式化輸入223
B.1.4 字符輸入/輸出函數(shù)224
B.1.5 直接輸入/輸出函數(shù)225
B.1.6 文件定位函數(shù)225
B.1.7 錯誤處理函數(shù)226
B.2 字符類別測試:226
B.3 字符串函數(shù):227
B.4 數(shù)學函數(shù):228
B.5 實用函數(shù):229
B.6 診斷:232
B.7 可變參數(shù)表:232
B.8 非局部跳轉(zhuǎn):232
B.9 信號:233
B.10 日期與時間函數(shù):234
B.11 與具體實現(xiàn)相關(guān)的限制:
和 236
附錄C 變更小結(jié)237
索引241