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