The C Programming Language

The C Programming Language

The C Programming Language譯作《C程式設計語言》,是由著名的計算機科學家Brian W. Kernighan和C語言之父的Dennis M. Ritchie合著的一部計算機科學著作,是第一部介紹C語言編程方法的書籍。它是一本必讀的程式設計語言方面的參考書。它在C語言的發展和普及過程中起到了非常重要的作用,被視為是C語言的業界標準規範,而且至今仍然廣泛使用。它也被公認為計算機技術著作的典範,以清晰簡潔的文字講述而著稱。書中用"hello world"為實例開始講解程式設計,也已經成為程式設計語言圖書的傳統。 本書的講述深入淺出,配合典型例證,通俗易懂,實用性強,適合作為大專院校計算機專業或非計算機專業的C語言教材,也可以作為從事計算機相關軟硬體開發的技術人員的參考書。 在計算機發展的歷史上,沒有哪一種程式設計語言像C語言這樣套用如此廣泛。

出版者的話

專家指導委員會

中文版序

譯者序

校譯者簡介

第1版序

引言

第1章 導言 1

1.1 入門 1

1.2 變數與算術表達式 3

1.3 for語句 8

1.4 符號常量 9

1.5 字元輸入/輸出 9

1.5.1 檔案複製 10

1.5.2 字元計數 11

1.5.3 行計數 13

1.5.4 單詞計數 14

1.6 數組 15

1.7 函式 17

.1.8 參數—傳值調用 19

1.9 字元數組 20

1.10 外部變數與作用域 22

第2章 類型、運算符與表達式 27

2.1 變數名 27

2.2 數據類型及長度 27

2.3 常量 28

2.4 聲明 31

2.5 算術運算符 32

2.6 關係運算符與邏輯運算符 32

2.7 類型轉換 33

2.8 自增運算符與自減運算符 37

2.9 按位運算符 38

2.10 賦值運算符與表達式 40

2.11 條件表達式 41

2.12 運算符優先權與求值次序 42

第3章 控制流 45

3.1 語句與程式塊 45

3.2 if-else語句 45

3.3 else-if語句 46

3.4 switch語句 48

3.5 while循環與for循環 49

3.6 do-while循環 52

3.7 break語句與continue語句 53

3.8 goto語句與標號 54

第4章 函式與程式結構 57

4.1 函式的基本知識 57

4.2 返回非整型值的函式 60

4.3 外部變數 62

4.4 作用域規則 68

4.5 頭檔案 69

4.6 靜態變數 70

4.7 暫存器變數 71

4.8 程式塊結構 72

4.9 初始化 72

4.10 遞歸 73

4.11 c預處理器 75

4.11.1 檔案包含 75

4.11.2 宏替換 76

4.11.3 條件包含 78

第5章 指針與數組 79

5.1 指針與地址 79

5.2 指針與函式參數 81

5.3 指針與數組 83

5.4 地址算術運算 86

5.5 字元指針與函式 89

5.6 指針數組以及指向指針的指針 92

5.7 多維數組 95

5.8 指針數組的初始化 97

5.9 指針與多維數組 97

5.10 命令行參數 98

5.11 指向函式的指針 102

5.12 複雜聲明 105

第6章 結構 111

6.1 結構的基本知識 111

6.2 結構與函式 113

6.3 結構數組 115

6.4 指向結構的指針 119

6.5 自引用結構 121

6.6 表查找 125

6.7 類型定義(typedef) 127

6.8 聯合 128

6.9 位欄位 130

第7章 輸入與輸出 133

7.1 標準輸入/輸出 133

7.2 格式化輸出—printf函式 135

7.3 變長參數表 136

7.4 格式化輸入—scanf函式 137

7.5 檔案訪問 140

7.6 錯誤處理—stderr和exit 143

7.7 行輸入和行輸出 144

7.8 其他函式 145

7.8.1 字元串操作函式 145

7.8.2 字元類別測試和轉換函式 146

7.8.3 ungetc函式 146

7.8.4 命令執行函式 146

7.8.5 存儲管理函式 147

7.8.6 數學函式 147

7.8.7 隨機數發生器函式 148

第8章 unix系統接口 149

8.1 檔案描述符 149

8.2 低級i/o—read和write 150

8.3 open、creat、close和unlink 151

8.4 隨機訪問—lseek 153

8.5 實例—fopen和getc函式的實現 154

8.6 實例—目錄列表 157

8.7 實例—存儲分配程式 162

附錄a 參考手冊 167

a.1 引言 167

a.2 詞法規則 167

a.2.1 記號 167

a.2.2 注釋 167

a.2.3 標識符 167

a.2.4 關鍵字 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 轉換 173

a.6.1 整型提升 173

a.6.2 整型轉換 173

a.6.3 整數和浮點數 173

a.6.4 浮點類型 173

a.6.5 算術類型轉換 173

a.6.6 指針和整數 174

a.6.7 void 175

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 強制類型轉換 180

a.7.6 乘法類運算符 180

a.7.7 加法類運算符 181

a.7.8 移位運算符 181

a.7.9 關係運算符 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 結構和聯合聲明 188

a.8.4 枚舉 191

a.8.5 聲明符 191

a.8.6 聲明符的含義 192

a.8.7 初始化 195

a.8.8 類型名 197

a.8.9 typedef 198

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 循環語句 201

a.9.6 跳轉語句 201

a.10 外部聲明 202

a.10.1 函式定義 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 pragma 210

a.12.9 空指令 210

a.12.10 預定義名字 211

a.13 語法 211

附錄b 標準庫 219

b.1 輸入與輸出:[stdio.h] 219

b.1.1 檔案操作 220

b.1.2 格式化輸出 221

b.1.3 格式化輸入 223

b.1.4 字元輸入/輸出函式 224

b.1.5 直接輸入/輸出函式 225

b.1.6 檔案定位函式 225

b.1.7 錯誤處理函式 226

b.2 字元類別測試:[ctype.h] 226

b.3 字元串函式:[string.h] 227

b.4 數學函式:[math.h] 228

b.5 實用函式:[stdlib.h] 229

b.6 診斷:[assert.h] 232

b.7 可變參數表:[stdarg.h] 232

b.8 非局部跳轉:[setjmp.h] 232

b.9 信號:[signal.h] 233

b.10 日期與時間函式:[time.h] 234

b.11 與具體實現相關的限制:

[limits.h] 和 [float.h] 236

附錄c 變更小結 237

索引 241

相關詞條

熱門詞條

聯絡我們