C語言本質
陳鵬
商品描述
本書主要介紹C語言的語法與語義,包括數據類型、變量、控制語句、循環語句、數組、函數、指針等,以及如何使用C語言編寫一些常規程序。同時,本書對函數調用過程、內存管理、程序運行等知識展開介紹,幫助讀者初步掌握計算機體系結構方面的知識,了解在操作系統環境下程序的基本內存布局、大致運行過程等。
本書適合高校計算機相關專業的本科生和職業院校的學生閱讀、學習,也可供對C語言感興趣的讀者參考。
作者簡介
陳鵬
江西南豐縣人,1979年5月出生,北京語言大學信息科學學院副教授。
博士畢業於北京航空航天大學計算機學院,畢業後在中國社會科學院哲學研究所進行博士後研究。主要研究方向是計算機軟件與理論、數理邏輯和信息哲學。
出版《漢語組合範疇語法研究一-於交叉學科的視角》《操作系統本質》《區塊鏈本質》《趣學C語言一-學會如何與計算機溝通》等專著,以及《證明達爾文》《數字方法》等譯著。發表論文20余篇,申請發明專利10余項、軟件著作權10余項。擔任中國邏輯學會常務理事,北京邏輯學會常務理事、副秘書長,中國自然辯證法研究會科學基礎與信息網絡專業委員會副主任委員。2013年入選北京市高等學校青年英才計劃項目。2021年,《操作系統本質》入選北京高校“優質本科教材課件”。
目錄大綱
目 錄
第01章 緒論001
1.1.C語言初識 002
1.2.C語言的發展 003
1.3.C語言的學習 004
習題 005
第02章 C語言程序基礎008
2.1.數據類型與變量 009
2.1.1.字母、數字和特殊符號 009
2.1.2.常量、變量和關鍵字 009
2.1.3.數據類型 011
2.1.4.轉義字符 013
2.1.5.token 014
2.2.輸入/輸出 014
2.2.1.字符數據輸入與輸出 015
2.2.2.格式輸出與輸入 015
2.3.運算符與表達式 019
2.3.1.賦值運算符和賦值表達式 019
2.3.2.逗號運算符和逗號表達式 022
2.3.3.算術運算符和算術表達式 022
2.4.完整的C語言程序 023
本章小結 025
習題 026
第03章 選擇結構程序設計031
3.1.選擇結構和條件判斷 032
3.2.關系運算符和表達式 034
3.3.邏輯運算符和表達式 034
3.4.if語句 037
3.4.1.if語句的3種形式 037
3.4.2.if語句的嵌套 040
3.5.條件運算符和條件表達式 045
3.6.switch語句 048
3.7.計算機中的數 051
3.7.1.類型轉換問題 051
3.7.2.浮點數的比較問題 054
本章小結 057
習題 058
第04章 循環結構程序設計062
4.1.概述 063
4.2.while語句 063
4.3.do-while語句 066
4.4.for語句 068
4.5.break和continue語句 074
本章小結 080
習題 080
第05章 利用數組處理批量數據086
5.1.概述 087
5.2.一維數組 087
5.2.1.一維數組的定義 087
5.2.2.一維數組元素的引用 088
5.2.3.一維數組的初始化 089
5.2.4.內存中的數組元素 090
5.2.5.越界檢查 090
5.3.二維數組 091
5.3.1.二維數組的定義 091
5.3.2.數組元素的引用 092
5.3.3.二維數組的初始化 092
5.3.4.二維數組的內存圖 094
5.4.字符數組 100
5.4.1.字符數組的定義 100
5.4.2.字符數組的初始化 101
5.4.3.字符串和結束標誌 101
5.4.4.字符數組的輸入/輸出 102
5.4.5.字符串處理函數 102
本章小結 110
習題 110
第06章 函數115
6.1.概述 116
6.2.函數定義 118
6.2.1.無參函數與有參函數的定義 118
6.2.2.函數的形參、實參和函數的值 119
6.2.3.函數的聲明與函數原型 122
6.3.函數的調用 124
6.3.1.函數調用的方式 124
6.3.2.函數的嵌套調用 125
6.4.函數調用過程中的棧幀分析 128
6.4.1.棧 129
6.4.2.棧幀 130
6.4.3.函數調用過程分析 131
6.5.數組作函數參數 132
6.6.函數的遞歸調用 136
6.7.局部變量和全局變量 146
6.7.1.局部變量 146
6.7.2.全局變量 147
本章小結 150
習題 150
第07章 再談數據類型與變量155
7.1.信息的表征與處理 156
7.1.1.二進制表征 156
7.1.2.位運算 161
7.2.不同存儲類型的變量 168
7.2.1.自動存儲類型變量 169
7.2.2.寄存器存儲類型變量 170
7.2.3.靜態存儲類型變量 172
7.2.4.外部類型存儲變量 176
7.2.5.變量的其他修飾符 179
7.3.結構體 180
7.3.1.結構體的定義與使用 180
7.3.2.位域 185
7.4.共用體 188
7.5.枚舉類型 192
本章小結 197
習題 197
第08章 指針204
8.1.指針概述 205
8.1.1.變量、地址和值 205
8.1.2.指針變量定義與指針運算符 206
8.2.傳值與傳地址 209
8.3.數組與指針 216
8.3.1.指針變量運算 216
8.3.2.通過指針引用數組元素 217
8.3.3.指向多維數組的指針和指針變量 224
8.4.動態內存分配 229
8.4.1.靜態內存布局 231
8.4.2.動態內存布局 237
8.4.3.動態內存分配的問題 244
8.5.自指結構 251
8.5.1.鏈表 251
8.5.2.二叉樹 255
8.6.指向函數的指針 261
8.6.1.回調函數 262
8.6.2.跳轉表 263
本章小結 266
習題 266
第09章 文件272
9.1.概述 273
9.2.文件指針 273
9.3.文件的操作 274
9.3.1.文件的打開與關閉 274
9.3.2.文件讀寫 276
9.3.3.文件檢測函數 284
9.4.一個簡單的聊天機器人程序 286
9.4.1.自定義頭文件 286
9.4.2.初識C程序的編譯過程 288
9.4.3.一個簡單的聊天機器人程序 290
本章小結 297
習題 297
第10章 深入理解Hello World300
10.1.編譯的工具與流程 302
10.1.1.GCC編譯器核心 302
10.1.2.Binutils工具集 303
10.1.3.glibc庫 303
10.1.4.GCC編譯流程 304
10.2.預處理階段 304
10.3.編譯階段 307
10.4.匯編階段 313
10.5.鏈接階段 315
本章小結 323
習題 323
第11章 結語327
附錄A.ASCII碼表 330
附錄B.C語言運算符優先級 333
附錄C.C語言常用庫函數 336
附錄D.C語言類型轉換 344
附錄E.C語言的調試 349
參考閱讀 352
跋 353

