為什么寫(xiě)這本書(shū)
C 語(yǔ)言是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,是在C語(yǔ)言基礎(chǔ)上發(fā)展而來(lái)的。它誕生于1983年,由本賈尼·斯特勞斯特盧普在貝爾實(shí)驗(yàn)室開(kāi)發(fā),旨在將C語(yǔ)言的優(yōu)勢(shì)與面向?qū)ο缶幊痰乃枷胂嘟Y(jié)合,成為一種更加強(qiáng)大的編程語(yǔ)言。
盡管現(xiàn)在有很多編程語(yǔ)言可供選擇,但C 語(yǔ)言仍然是許多開(kāi)發(fā)人員的首選語(yǔ)言,因?yàn)樗且环N高效、可移植、可靠且廣泛使用的語(yǔ)言。市面上的C 語(yǔ)言圖書(shū)有很多,但普遍較難懂,有許多初學(xué)者難以掌握其中內(nèi)容。因此,本書(shū)旨在為初學(xué)者提供一本簡(jiǎn)單易懂的C 語(yǔ)言入門(mén)指南,希望幫助初學(xué)者輕松掌握C 語(yǔ)言編程的基礎(chǔ)知識(shí)。本書(shū)是極簡(jiǎn)開(kāi)發(fā)者書(shū)庫(kù)中的一本,極簡(jiǎn)開(kāi)發(fā)者書(shū)庫(kù)秉承講解簡(jiǎn)單、快速入門(mén)和易于掌握的原則,是為新手入門(mén)而設(shè)計(jì)的系列圖書(shū)。
讀者對(duì)象
無(wú)論是初學(xué)者還是有一定經(jīng)驗(yàn)的程序員,本書(shū)都能幫助您深入理解C 編程語(yǔ)言,并掌握實(shí)際應(yīng)用技術(shù)。
相關(guān)資源
為了更好地為廣大讀者提供服務(wù),本書(shū)提供配套源代碼、教學(xué)課件、微課視頻、開(kāi)源工具等資源。
如何使用本書(shū)配套源代碼
本書(shū)配套源代碼可以到清華大學(xué)出版社官網(wǎng)本書(shū)頁(yè)面下載。
下載本書(shū)源代碼并解壓,會(huì)看到如圖1所示的目錄結(jié)構(gòu)。chapter1~chapter17是本書(shū)第1~17章示例代碼所在的文件夾名。
例如,打開(kāi)chapter6文件夾可見(jiàn)第6章的所有示例代碼文件夾,如圖2所示,其中每個(gè)文件夾對(duì)應(yīng)一個(gè)示例。
打開(kāi)一個(gè)示例文件夾,例如打開(kāi)6.4.3 goto語(yǔ)句文件夾,如圖3所示,其中HelloProj.sln文件就是解決方案文件,如果已經(jīng)安裝了Visual Studio工具軟件,則雙擊HelloProj.sln即可打開(kāi)示例代碼。
圖1目錄結(jié)構(gòu)
圖2第6章示例代碼文件夾
圖36.4.3 goto語(yǔ)句文件夾
致謝
感謝清華大學(xué)出版社盛東亮編輯提出的寶貴意見(jiàn)。感謝智捷課堂團(tuán)隊(duì)的趙志榮、趙大羽、關(guān)錦華、閆婷嬌、王馨然、關(guān)秀華和關(guān)童心參與本書(shū)部分內(nèi)容的編寫(xiě)。感謝趙浩丞手繪了書(shū)中全部插圖,并從專(zhuān)業(yè)的角度修改書(shū)中圖片,力求將本書(shū)內(nèi)容更加真實(shí)、完美地奉獻(xiàn)給廣大讀者。感謝我的家人容忍我的忙碌,正是他們對(duì)我的關(guān)心和照顧,使我能抽出時(shí)間,投入精力專(zhuān)心編寫(xiě)此書(shū)。
由于C 語(yǔ)言編程應(yīng)用不斷更新迭代,而作者水平有限,書(shū)中難免存在不妥之處,懇請(qǐng)讀者提出寶貴修改意見(jiàn),以便再版時(shí)改進(jìn)。
編者2023年12月
第1章直奔主題編寫(xiě)第一個(gè)C 程序
微課視頻7分鐘
1.1搭建開(kāi)發(fā)環(huán)境
1.1.1下載Visual Studio
1.1.2安裝Visual Studio
1.1.3設(shè)置Visual Studio
1.2編寫(xiě)C 程序代碼
1.2.1創(chuàng)建Visual Studio項(xiàng)目
1.2.2運(yùn)行Visual Studio項(xiàng)目
1.2.3修改代碼
1.3動(dòng)手練一練
第2章C 語(yǔ)法基礎(chǔ)
微課視頻38分鐘
2.1關(guān)鍵字與標(biāo)識(shí)符
2.1.1關(guān)鍵字
2.1.2標(biāo)識(shí)符
2.2分隔符
2.2.1分號(hào)
2.2.2大括號(hào)
2.2.3空白
2.3注釋
2.3.1單行注釋
2.3.2多行注釋
2.4變量
2.4.1變量的聲明與初始化
2.4.2使用auto關(guān)鍵字聲明變量
2.4.3變量作用域
2.5常量
2.6命名空間
2.6.1什么是命名空間
2.6.2聲明命名空間
2.6.3訪問(wèn)命名空間中的成員
2.6.4使用作用域限定符(∷)
2.6.5使用using命令
2.7動(dòng)手練一練
第3章C 數(shù)據(jù)類(lèi)型
微課視頻25分鐘
3.1C 中的數(shù)據(jù)類(lèi)型
3.2整數(shù)類(lèi)型
3.2.1數(shù)據(jù)類(lèi)型修飾符
3.2.2數(shù)據(jù)溢出
3.2.3整數(shù)的表示方式
3.3浮點(diǎn)類(lèi)型
3.4字符類(lèi)型
3.5布爾類(lèi)型
3.6數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換
3.6.1自動(dòng)類(lèi)型轉(zhuǎn)換
3.6.2強(qiáng)制類(lèi)型轉(zhuǎn)換
3.7動(dòng)手練一練
第4章運(yùn)算符
微課視頻22分鐘
4.1一元算術(shù)運(yùn)算符
4.2二元算術(shù)運(yùn)算符
4.3關(guān)系運(yùn)算符
4.4邏輯運(yùn)算符
4.5位運(yùn)算符
4.6賦值運(yùn)算符
4.7三元運(yùn)算符
4.8運(yùn)算符優(yōu)先級(jí)
4.9動(dòng)手練一練
第5章條件語(yǔ)句
微課視頻12分鐘
5.1if語(yǔ)句
5.1.1if結(jié)構(gòu)
5.1.2ifelse結(jié)構(gòu)
5.1.3ifelseif結(jié)構(gòu)
5.2switch語(yǔ)句
5.3動(dòng)手練一練
第6章循環(huán)語(yǔ)句
微課視頻20分鐘
6.1while語(yǔ)句
6.2dowhile語(yǔ)句
6.3for語(yǔ)句
6.3.1C語(yǔ)言風(fēng)格for循環(huán)語(yǔ)句
6.3.2foreach循環(huán)語(yǔ)句
6.4跳轉(zhuǎn)語(yǔ)句
6.4.1break語(yǔ)句
6.4.2continue語(yǔ)句
6.4.3goto語(yǔ)句
6.5動(dòng)手練一練
第7章數(shù)組
微課視頻14分鐘
7.1數(shù)組那些事兒
7.1.1數(shù)組的基本特性
7.1.2數(shù)組的維度
7.2一維數(shù)組
7.2.1聲明一維數(shù)組
7.2.2初始化一維數(shù)組
7.2.3訪問(wèn)一維數(shù)組中的元素
7.3二維數(shù)組
7.3.1聲明二維數(shù)組
7.3.2初始化二維數(shù)組
7.3.3訪問(wèn)二維數(shù)組中的元素
7.4三維數(shù)組
7.5動(dòng)手練一練
第8章字符串
微課視頻22分鐘
8.1字符串概述
8.1.1C語(yǔ)言風(fēng)格的字符串
8.1.2C 標(biāo)準(zhǔn)庫(kù)提供的字符串類(lèi)型
8.2字符串的用法
8.2.1字符串拼接
8.2.2字符串追加
8.2.3字符串查找
8.2.4字符串比較
8.2.5字符串截取
8.3字符串中的字符轉(zhuǎn)義
8.4動(dòng)手練一練
第9章指針類(lèi)型
微課視頻18分鐘
9.1C 指針
9.1.1聲明指針變量
9.1.2獲取變量的內(nèi)存地址
9.2指針進(jìn)階
9.2.1指針與數(shù)組
9.2.2二級(jí)指針
9.2.3對(duì)象指針
9.3動(dòng)手練一練
第10章自定義數(shù)據(jù)類(lèi)型
微課視頻18分鐘
10.1枚舉
10.2結(jié)構(gòu)體
10.2.1結(jié)構(gòu)體變量
10.2.2結(jié)構(gòu)體指針變量
10.3聯(lián)合
10.4動(dòng)手練一練
第11章函數(shù)
微課視頻24分鐘
11.1函數(shù)概述
11.2定義函數(shù)
11.3聲明函數(shù)
11.3.1未聲明函數(shù)的編譯錯(cuò)誤
11.3.2在同一個(gè)文件中聲明函數(shù)
11.3.3在頭文件中聲明函數(shù)
11.3.4包含頭文件
11.4函數(shù)參數(shù)的傳遞
11.4.1按值傳遞參數(shù)
11.4.2按引用傳遞參數(shù)
11.4.3示例: 實(shí)現(xiàn)數(shù)據(jù)交換函數(shù)
11.5參數(shù)默認(rèn)值
11.6函數(shù)重載
11.7動(dòng)手練一練
第12章面向?qū)ο?/p>
微課視頻59分鐘
12.1面向?qū)ο蠛?jiǎn)介
12.1.1什么是類(lèi)和對(duì)象
12.1.2面向?qū)ο蟮幕咎卣?/p>
12.2類(lèi)的聲明與定義
12.2.1定義類(lèi)
12.2.2聲明類(lèi)
12.3構(gòu)造函數(shù)
12.3.1聲明和定義構(gòu)造函數(shù)
12.3.2構(gòu)造函數(shù)的重載
12.4析構(gòu)函數(shù)
12.5對(duì)象指針
12.5.1通過(guò)對(duì)象指針訪問(wèn)成員
12.5.2成員變量與參數(shù)命名沖突
12.5.3this指針
12.6對(duì)象的動(dòng)態(tài)創(chuàng)建與銷(xiāo)毀
12.7靜態(tài)成員
12.7.1靜態(tài)成員變量
12.7.2靜態(tài)成員函數(shù)
12.8封裝性
12.8.1封裝性的設(shè)計(jì)規(guī)范
12.8.2C 中封裝性的實(shí)現(xiàn)
12.9繼承性
12.9.1C 中類(lèi)的繼承性的實(shí)現(xiàn)
12.9.2調(diào)用父類(lèi)構(gòu)造函數(shù)
12.10多態(tài)性
12.10.1C 多態(tài)性的實(shí)現(xiàn)
12.10.2純虛函數(shù)
12.11動(dòng)手練一練
第13章模板
微課視頻38分鐘
13.1函數(shù)模板
13.1.1一個(gè)問(wèn)題的思考
13.1.2聲明函數(shù)模板
13.2類(lèi)模板
13.2.1聲明類(lèi)模板
13.2.2使用類(lèi)模板
13.3C 標(biāo)準(zhǔn)模板庫(kù)
13.4vector
13.4.1動(dòng)態(tài)初始化vector
13.4.2靜態(tài)初始化vector
13.4.3訪問(wèn)vector元素
13.4.4刪除vector元素
13.4.5高維vector
13.5map
13.5.1初始化map
13.5.2插入數(shù)據(jù)
13.5.3刪除數(shù)據(jù)
13.5.4遍歷map
13.6動(dòng)手練一練
第14章異常處理
微課視頻20分鐘
14.1從一個(gè)問(wèn)題開(kāi)始
14.2拋出異常
14.3捕獲異常
14.3.1捕獲多種異常
14.3.2捕獲任何類(lèi)型異常
14.4C 標(biāo)準(zhǔn)異常
14.5自定義異常類(lèi)
14.6動(dòng)手練一練
第15章I/O流
微課視頻16分鐘
15.1標(biāo)準(zhǔn)I/O流
15.2文件操作
15.2.1文件I/O流
15.2.2打開(kāi)文件
15.2.3關(guān)閉文件
15.2.4從文件中讀取數(shù)據(jù)
15.2.5讀取多行數(shù)據(jù)
15.2.6中文亂碼問(wèn)題
15.2.7寫(xiě)入文件
15.3案例: 圖片復(fù)制工具
15.4動(dòng)手練一練
第16章MySQL數(shù)據(jù)庫(kù)編程
微課視頻50分鐘
16.1MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)
16.1.1安裝MySQL 8數(shù)據(jù)庫(kù)
16.1.2客戶(hù)端登錄服務(wù)器
16.1.3常見(jiàn)的管理命令
16.2C 與MySQL鏈接器
16.2.1安裝MySQL鏈接器
16.2.2在Visual Studio中配置鏈接器
16.3使用XDevAPI
16.3.1數(shù)據(jù)庫(kù)會(huì)話
16.3.2使用表
16.3.3綁定參數(shù)
16.3.4事務(wù)管理
16.4案例: 員工表增、刪、改、查操作
16.4.1創(chuàng)建員工表
16.4.2插入員工數(shù)據(jù)
16.4.3更新員工數(shù)據(jù)
16.4.4刪除員工數(shù)據(jù)
16.5動(dòng)手練一練
第17章wxWidgets圖形界面應(yīng)用程序開(kāi)發(fā)
微課視頻62分鐘
17.1C 圖形界面應(yīng)用程序開(kāi)發(fā)概述
17.2開(kāi)發(fā)wxWidgets程序前的準(zhǔn)備工作
17.2.1下載wxWidgets
17.2.2編譯wxWidgets源代碼
17.2.3配置wxWidgets系統(tǒng)環(huán)境變量
17.3創(chuàng)建第一個(gè)wxWidgets程序
17.3.1創(chuàng)建項(xiàng)目
17.3.2設(shè)置項(xiàng)目
17.3.3編寫(xiě)代碼
17.3.4重構(gòu)代碼
17.4將控件添加到窗口
17.5事件處理
17.5.1一對(duì)一事件處理
17.5.2一對(duì)多事件處理
17.6布局管理
17.6.1盒子布局管理器類(lèi)
17.6.2網(wǎng)格布局管理器類(lèi)
17.7常用控件
17.7.1文本輸入控件
17.7.2列表框和下拉列表框
17.7.3表格控件
附錄A動(dòng)手練一練參考答案