C語(yǔ)言是計(jì)算機(jī)專業(yè)中的必修課,也是大多數(shù)編程技術(shù)中的底層技術(shù)。本書(shū)作為該領(lǐng)域中的入門教材,在內(nèi)容中涵蓋了C語(yǔ)言中的各方面基礎(chǔ)知識(shí)以及實(shí)操案例,并且是使用生動(dòng)的案例對(duì)應(yīng)相關(guān)的知識(shí)點(diǎn),在對(duì)應(yīng)的代碼中做出了詳細(xì)的講解。全書(shū)一共 17 章,第1~10章介紹了 C 語(yǔ)言的基礎(chǔ)語(yǔ)法用 法,包括:常量、變量、流程控制、數(shù)組、函數(shù)等;第 11~15 章介紹了C語(yǔ)言中的相對(duì)高級(jí)語(yǔ)法,包 括:指針、數(shù)組指針、指針數(shù)組、函數(shù)指針、指針函數(shù)、函數(shù)指針數(shù)組、枚舉、結(jié)構(gòu)體、聯(lián)合體等; 第16~17章包含一個(gè)綜合的實(shí)操案例,案例應(yīng)用到的技術(shù)內(nèi)容相對(duì)全面,基本可以包含之前所學(xué)習(xí)過(guò) 的大部分知識(shí)內(nèi)容。另外還有一部分筆試練習(xí)題。由于考慮到讀者大多數(shù)是在校的大學(xué)生。所以針對(duì)性地做了這個(gè)章節(jié)。目的是讀者能夠熟悉筆試題的出題方式,未來(lái)可以更好地應(yīng)對(duì)筆試考試。
本書(shū)可作為高等院校計(jì)算機(jī)專業(yè)教材或者輔助材料,適合對(duì)計(jì)算機(jī)操作有一定認(rèn)知的編程愛(ài)好 者,比如計(jì)算機(jī)專業(yè)的高等院校新生,同樣也適合目前正在學(xué)習(xí)或者正準(zhǔn)備學(xué)習(xí) C 語(yǔ)言的編程愛(ài)好者。
編程實(shí)例幫助學(xué)習(xí)C語(yǔ)言語(yǔ)法規(guī)則
本書(shū)設(shè)計(jì)的初衷是為了幫助目前計(jì)算機(jī)相關(guān)專業(yè)的在校生,更好地學(xué)習(xí)并真正掌握 C 語(yǔ)言這門優(yōu)秀的編程語(yǔ)言。就像本書(shū)的名字一樣,只要能夠認(rèn)認(rèn)真真、踏踏實(shí)實(shí)地把這本書(shū)中的所有內(nèi)容都學(xué)習(xí)一遍,并且都能夠熟練地掌握,就可以做到不掛科。其實(shí)不掛科并不是最終的目的,因?yàn)檫@個(gè)目標(biāo)實(shí)在是太小也太容易達(dá)到了,目的應(yīng)該是用 C 語(yǔ)言作為編程母語(yǔ),更方便未來(lái)將編程能力平移到任意其他的語(yǔ)言,或者說(shuō)其他的應(yīng)用領(lǐng)域。
這本書(shū)能夠幫助零基礎(chǔ)的小白通過(guò)豐富的代碼實(shí)操示例快速地掌握 C 語(yǔ)言的各種語(yǔ)法應(yīng)用。書(shū)中的內(nèi)容將會(huì)以第一人稱對(duì)話的形式呈現(xiàn),在本書(shū)中,你將會(huì)獲得一個(gè)角色。從現(xiàn)在開(kāi)始,你的名字叫作小肆,在未來(lái)使用本書(shū)的過(guò)程中,這個(gè)名字會(huì)高頻率地出現(xiàn)在代碼示例和內(nèi)容講解中,讓讀者學(xué)習(xí)起來(lái)更有代入感。這也和老邪本人制作的課程一樣,采用第一人稱視角聊天的講解方式,相信會(huì)讓你的學(xué)習(xí)效果事半功倍。
在本書(shū)中讀者只需要跟著書(shū)中的代碼示例進(jìn)行按部就班的學(xué)習(xí),就一定能很輕松地掌握 C 語(yǔ)言這個(gè)學(xué)科內(nèi)的各種常用知識(shí)。本書(shū)的特點(diǎn)是利用代碼實(shí)操示例得到運(yùn)行效果,再根據(jù)運(yùn)行效果反推語(yǔ)法結(jié)構(gòu)以及相關(guān)的一些理論,這也是老邪本人一直以來(lái)的教學(xué)理念。在技術(shù)學(xué)習(xí)的道路上,一切脫離了實(shí)操的理論、原理都是在學(xué)習(xí)中的絆腳石。只有通過(guò)結(jié)果推導(dǎo)出來(lái)的結(jié)論才是能夠理解掌握的,只有真正理解掌握了,才能做到舉一反三,在使用中做到融會(huì)貫通。所以在學(xué)習(xí)編程的初期,不要著急去了解什么原理、理論之類晦澀難懂的內(nèi)容,先把注意力放在實(shí)操環(huán)節(jié)。經(jīng)過(guò)一定的積累到了該了解的時(shí)候,你就會(huì)驚喜地發(fā)現(xiàn)自己已經(jīng)具備了歸納總結(jié)能力,并且通過(guò)自己的歸納總結(jié)得到的都是正確的結(jié)論。通過(guò)這本書(shū),老邪不僅僅要教會(huì) C 語(yǔ)言,更重要的是教會(huì)學(xué)習(xí)技術(shù)的方法。掌握了這種方法,養(yǎng)成了正確的學(xué)習(xí)習(xí)慣之后,未來(lái)再去學(xué)習(xí)任何的一門技術(shù)都可以事半功倍,輕松上手!
明確了基本的學(xué)習(xí)思路之后,接下來(lái)就要了解一下老邪針對(duì)本書(shū)使用的學(xué)習(xí)方法。老邪在 IT 教培行業(yè)從教 17 年。一直強(qiáng)調(diào)的都是一帶三 的學(xué)習(xí)方法,這個(gè)學(xué)習(xí)方法在之前出版的《碼解Java》一書(shū)中也做了推薦與介紹,接下來(lái)就具體地描述一下這個(gè)方法。
一帶三中的一指的是需要自己手寫(xiě)一遍代碼。對(duì)!你沒(méi)看錯(cuò),手寫(xiě),就是手寫(xiě),用筆在本上寫(xiě)。學(xué)習(xí)的本質(zhì)就是先輸入再輸出,看了一遍我給你的內(nèi)容,這就是輸入。這么多年來(lái)你最熟悉的輸出方式就是用筆,而不是用鍵盤。在學(xué)習(xí)編程的初期,很多新手小白甚至連鍵盤的使用都不是很熟練,何況還要頻繁地在代碼中切換大小寫(xiě),而且還有各種會(huì)經(jīng)常出現(xiàn)在代碼中的標(biāo)點(diǎn)符號(hào),比如:!@#$%^&*()_ ~<><<>>;/ : 等等。前期如果直接使用鍵盤去敲代碼,鍵盤在很大程度上會(huì)牽扯你的注意力,所以我的要求是必須用筆,以手寫(xiě)的方式至少寫(xiě)一遍代碼。這樣就會(huì)最大程度地對(duì)代碼本身的邏輯和結(jié)構(gòu)有一個(gè)初步的認(rèn)識(shí),并且可以更專注于代碼本身的邏輯和結(jié)構(gòu)。不要忽略了物理層面的表現(xiàn)力。人們經(jīng)常會(huì)忘記電腦里面的文件存放的位置、文件的名字等信息,但是我相信你一定能想起來(lái)最后一次用筆寫(xiě)的最后兩個(gè)字是什么?甚至可以記起是寫(xiě)在了紙上還是本上?你是站著、坐著、蹲著、趴著還是撅著寫(xiě)的?你甚至還會(huì)想起是寫(xiě)在一張紙的左上角還是右下角?如果你的記性再好一點(diǎn)兒,甚至?xí)肫饋?lái)用的是鋼筆、鉛筆還是圓珠筆。沒(méi)錯(cuò),這就是物理層面的表現(xiàn)力。這么有助于我們記憶的一種方式,往往被大家所忽略。本書(shū)用了這么多篇幅來(lái)強(qiáng)調(diào)手寫(xiě)的重要性,可以看出本人對(duì)于學(xué)習(xí)中的這個(gè)環(huán)節(jié)是多么地看重。所以如果你想要真正地學(xué)會(huì)這門技術(shù),就一定要按照我告訴你的方式一步一步去操作。
一帶三中的三,指的是在鍵盤上敲至少三遍。注意我們?cè)谑褂面I盤敲代碼的時(shí)候,不要在屏幕上打開(kāi)隨書(shū)附贈(zèng)的源碼文件。如果照著源碼敲代碼的話,這種敲代碼的方式實(shí)際上就是在練打字。想象一下,如果讓你用金山打字通隨機(jī)找一篇陌生的英文文章照著打三遍,能記住多少?80%?50%?還是30%……所以照著敲是最不可取的方法。
第一遍用鍵盤敲代碼的時(shí)候應(yīng)該憑著自己的回憶和理解去敲,當(dāng)然大概率會(huì)有記不住的地方,這個(gè)時(shí)候你就可以利用之前手寫(xiě)的代碼去填充殘缺的記憶,完成第一遍代碼的編寫(xiě),最終要能夠成功地編譯并運(yùn)行代碼。寫(xiě)完第一遍代碼之后不要保存,更不要直接刪除,接下來(lái)你要做的是將代碼的每一行根據(jù)之前的理解,添加上相應(yīng)的注釋。然后再把代碼部分刪除,但是要保留下來(lái)注釋部分。這個(gè)時(shí)候經(jīng)過(guò)了第一遍的手寫(xiě),然后又敲了一遍代碼,最后又添加了一次注釋,相當(dāng)于已經(jīng)復(fù)習(xí)三遍代碼了。
接下來(lái)就開(kāi)始手敲第二遍代碼,這個(gè)時(shí)候因?yàn)橛凶⑨屧,所以我們?xiě)代碼的感覺(jué)類似于漢譯英了。而且有了之前三遍的復(fù)習(xí)效果作為加持,這一次完成得相對(duì)就會(huì)簡(jiǎn)單很多,也會(huì)在一定程度上為自己的學(xué)習(xí)增加信心。那么這次敲完代碼之后,相當(dāng)于是又復(fù)習(xí)了一次代碼。此時(shí)我們可以把所有的內(nèi)容,包括代碼和注釋全部刪除,又保留一個(gè)空白的文件。
最后我們開(kāi)始手敲第三遍代碼,如果這一次你能通過(guò)自己的理解和記憶獨(dú)立完成代碼編寫(xiě)。那么你才算是真正地吸收和掌握了這個(gè)代碼。相反如果這一次你還是不能自己獨(dú)立完成代碼編寫(xiě),這就說(shuō)明你對(duì)這個(gè)代碼的理解還不夠,而且有些關(guān)鍵的點(diǎn)并沒(méi)有記住。任何的理解都是建立在能記住的基礎(chǔ)上,如果你連記都記不住,還談什么理解。所以如果你不能獨(dú)立完成代碼編寫(xiě),那么還要繼續(xù)多敲幾遍,一直到能獨(dú)立完成為止。
記住我下面要說(shuō)的話:學(xué)習(xí)編程也好,學(xué)習(xí)其他的技術(shù)也好,我們的最終目的是學(xué)會(huì),而不是學(xué)完,我們要學(xué)得扎實(shí),一步一個(gè)腳印,而不是為了快!所以學(xué)習(xí)技術(shù)最好的捷徑就是不走捷徑,當(dāng)你開(kāi)始尋找捷徑的那一刻開(kāi)始,其實(shí)你就已經(jīng)開(kāi)始走彎路了。
那么從現(xiàn)在開(kāi)始整理狀態(tài),調(diào)整好自己的心態(tài),準(zhǔn)備和老邪一起迎接一個(gè)新的學(xué)習(xí)階段。我們開(kāi)始吧!
本書(shū)提供了配套的代碼資源、筆試練習(xí)題和讀者服務(wù)群,可以掃描下方二維碼獲取資源或進(jìn)群。
作者
2025年元月
王冰,筆名IT老邪,IT教培行業(yè)從業(yè)17年,累計(jì)授課時(shí)長(zhǎng)超過(guò)兩萬(wàn)小時(shí),從業(yè)期間學(xué)員數(shù)以萬(wàn)計(jì)。
授課內(nèi)容涵蓋C/C 、Java、Python等主流開(kāi)發(fā)語(yǔ)言,涉及就業(yè)方向包括嵌入式開(kāi)發(fā)、Java、Web全棧開(kāi)發(fā)、Web前端開(kāi)發(fā)、PHP全棧開(kāi)發(fā)等。
曾獲得高校畢業(yè)生就業(yè)協(xié)會(huì)頒發(fā)的雙師型導(dǎo)師認(rèn)證,曾任某新三板教培機(jī)構(gòu)教學(xué)總監(jiān)、區(qū)域校長(zhǎng)以及多個(gè)高校的外聘講師。
第1章 C/C 語(yǔ)言簡(jiǎn)介與環(huán)境搭建 1
1.1 C語(yǔ)言和C 1
1.2 C語(yǔ)言的特點(diǎn) 1
1.3 C語(yǔ)言的用途 1
1.4 C語(yǔ)言的開(kāi)發(fā)工具 2
1.4.1 集成開(kāi)發(fā)工具 2
1.4.2 代碼編輯器 3
1.5 環(huán)境安裝 3
1.6 C/C 中的通用基礎(chǔ)語(yǔ)法 9
1.7 本章小結(jié) 10
第2章 C語(yǔ)言中的常量與
變量 11
2.1 常量變量在C語(yǔ)言中的作用 11
2.2 常量和變量相關(guān)關(guān)鍵詞 11
2.3 C語(yǔ)言中常量的使用 12
2.3.1 在代碼中用 const 定義并使
用常量 12
2.3.2 C語(yǔ)言中常量的其他變
現(xiàn)形式與使用 12
2.4 C語(yǔ)言中變量的使用 15
2.4.1 變量的定義 15
2.4.2 變量的使用 16
2.5 認(rèn)識(shí)計(jì)算機(jī)中的內(nèi)存存儲(chǔ) 20
2.5.1 計(jì)算機(jī)中的存儲(chǔ)單位 20
2.5.2 不同類型變量在內(nèi)存中
的存儲(chǔ)情況 21
2.5.3 static 關(guān)鍵詞 22
2.6 本章小結(jié) 22
第3章 C語(yǔ)言中的運(yùn)算符 24
3.1 C語(yǔ)言中的常用運(yùn)算符以及
分類 24
3.2 算術(shù)運(yùn)算符 25
3.2.1 算術(shù)運(yùn)算符的功能 25
3.2.2 算術(shù)運(yùn)算符示例 25
3.3 邏輯運(yùn)算符 29
3.3.1 邏輯運(yùn)算符的功能 29
3.3.2 程序代碼中的真與假 29
3.3.3 邏輯運(yùn)算符示例 30
3.4 關(guān)系運(yùn)算符 33
3.4.1 關(guān)系運(yùn)算符的功能 33
3.4.2 關(guān)系運(yùn)算符示例 33
3.5 位運(yùn)算符 34
3.5.1 位運(yùn)算符的功能 34
3.5.2 位運(yùn)算符示例 34
3.6 選擇運(yùn)算符 38
3.6.1 選擇運(yùn)算符的功能 38
3.6.2 選擇運(yùn)算符示例 38
3.7 求字節(jié)運(yùn)算符 40
3.7.1 求字節(jié)運(yùn)算符的功能 40
3.7.2 求字節(jié)運(yùn)算符示例 40
3.8 指針運(yùn)算符 41
3.8.1 指針運(yùn)算符的功能 41
3.8.2 指針運(yùn)算符示例 41
3.9 賦值運(yùn)算符 43
3.9.1 賦值運(yùn)算符的功能 43
3.9.2 賦值運(yùn)算符示例 44
3.10 自增自減運(yùn)算符 45
3.10.1 自增自減運(yùn)算符功能 45
3.10.2 自增自減運(yùn)算符示例 45
3.11 運(yùn)算符優(yōu)先級(jí) 46
3.12 本章小結(jié) 47
第4章 C語(yǔ)言中的流程控制
判斷 48
4.1 代碼的運(yùn)行順序 48
4.2 判斷、選擇結(jié)構(gòu) 48
4.2.1 關(guān)鍵詞 48
4.2.2 流程圖 49
4.2.3 if 的單獨(dú)使用 49
4.2.4 if…else語(yǔ)句的使用 50
4.2.5 else…if 的使用 52
4.2.6 if 的嵌套使用 55
4.3 綜合代碼示例 56
4.3.1 判斷奇偶數(shù) 56
4.3.2 判斷平閏年 58
4.4 本章小結(jié) 59
第5章 C語(yǔ)言中的流程控制
分支 60
5.1 分支結(jié)構(gòu)流程圖 60
5.2 分支結(jié)構(gòu)的標(biāo)準(zhǔn)語(yǔ)法 61
5.3 switch 基礎(chǔ)示例 61
5.4 break 的用法 62
5.5 default 的用法 65
5.6 綜合代碼示例 67
5.6.1 成績(jī)等級(jí)劃分 67
5.6.2 簡(jiǎn)易計(jì)算器 68
5.6.3 某月有多少天 69
5.6.4 凱撒日期 70
5.7 本章小結(jié) 73
第6章 C語(yǔ)言中的流程控制
循環(huán) 74
6.1 循環(huán)結(jié)構(gòu)簡(jiǎn)介 74
6.1.1 什么是循環(huán)結(jié)構(gòu) 74
6.1.2 為什么要使用循環(huán) 74
6.2 while 循環(huán) 75
6.2.1 while 標(biāo)準(zhǔn)語(yǔ)法 75
6.2.2 while 的流程圖 75
6.2.3 while 的基本使用示例 76
6.3 do…while 循環(huán) 78
6.3.1 do…while 標(biāo)準(zhǔn)語(yǔ)法 78
6.3.2 do…while 的流程圖 79
6.3.3 do…while 的基本使用
示例 79
6.4 for 循環(huán) 80
6.4.1 for 循環(huán)標(biāo)準(zhǔn)語(yǔ)法 80
6.4.2 for 循環(huán)的流程圖 81
6.4.3 for 的基本使用示例 81
6.5 break 與 continue 85
6.5.1 break 在循環(huán)中的使用 85
6.5.2 continue 在循環(huán)中的
使用 88
6.6 循環(huán)的嵌套使用 89
6.7 綜合代碼示例 90
6.8 本章小結(jié) 97
第7章 C語(yǔ)言中的數(shù)組 98
7.1 什么是數(shù)組 98
7.1.1 數(shù)組的簡(jiǎn)介 98
7.1.2 為什么要使用數(shù)組 99
7.2 數(shù)組的聲明與初始化 99
7.2.1 數(shù)組的聲明 99
7.2.2 數(shù)組的初始化 100
7.2.3 初始化以后的數(shù)組 101
7.3 數(shù)組中元素的引用 102
7.3.1 元素引用方法 102
7.3.2 數(shù)組的遍歷 103
7.4 多維數(shù)組 104
7.4.1 什么是多為數(shù)組 104
7.4.2 二維數(shù)組的定義與初
始化 104
7.4.3 二維數(shù)組元素的引 107
7.4.4 二維數(shù)組的遍歷 108
7.5 綜合代碼示例 109
7.6 本章小結(jié) 124
第8章 C語(yǔ)言中的字符串 125
8.1 字符數(shù)組 125
8.2 字符串 126
8.2.1 字符串的定義 126
8.2.2 字符串的初始化 130
8.2.3 字符串的輸入輸出 133
8.3 綜合代碼示例 134
8.4 本章小結(jié) 141
第9章 C語(yǔ)言中的函數(shù) 142
9.1 什么是函數(shù) 142
9.1.1 函數(shù)的簡(jiǎn)介 142
9.1.2 函數(shù)的基本概念 142
9.1.3 為什么要使用函數(shù) 143
9.2 函數(shù)的定義 144
9.2.1 帶參函數(shù)帶返回值 144
9.2.2 無(wú)參帶返回值 145
9.2.3 帶參無(wú)返回值 145
9.2.4 無(wú)參無(wú)返回值 146
9.3 函數(shù)的調(diào)用 146
9.4 全局變量與局部變量 148
9.5 函數(shù)的傳參 152
9.5.1 如何傳參 152
9.5.2 傳參順序 154
9.6 遞歸調(diào)用 155
9.6.1 遞歸的使用 155
9.6.2 遞歸小示例 158
9.7 main()函數(shù)怎么用 159
9.8 綜合代碼示例 161
9.9 本章小結(jié) 166
第10章 C語(yǔ)言中的庫(kù)
函數(shù) 167
10.1 stdio.h標(biāo)準(zhǔn)輸入輸出頭
文件 167
10.2 time.h 時(shí)間和日期函數(shù)頭
文件 171
10.3 stdlib.h 標(biāo)準(zhǔn)庫(kù)函數(shù)頭文件 173
10.4 string.h 字符串函數(shù)頭文件 174
10.5 math.h 數(shù)學(xué)函數(shù)頭文件 177
10.6 本章小結(jié) 181
第11章 C語(yǔ)言中的指針 182
11.1 指針簡(jiǎn)介 182
11.2 指針的聲明 183
11.2.1 指針相關(guān)的運(yùn)算符 183
11.2.2 語(yǔ)法結(jié)構(gòu) 183
11.3 直接訪問(wèn)與間接訪問(wèn) 184
11.3.1 直接訪問(wèn) 184
11.3.2 間接訪問(wèn) 185
11.4 指針與數(shù)組 185
11.5 指針與字符串 187
11.6 指針作為函數(shù)的參數(shù) 187
11.6.1 值傳遞 188
11.6.2 址傳遞 189
11.7 指針的高級(jí)應(yīng)用 191
11.7.1 多級(jí)指針 191
11.7.2 指針數(shù)組 193
11.7.3 數(shù)組指針 198
11.7.4 指針函數(shù) 200
11.7.5 函數(shù)指針 202
11.8 特殊指針 205
11.8.1 空指針 205
11.8.2 void指針 205
11.9 本章小結(jié) 207
第12章 C語(yǔ)言中的結(jié)構(gòu)體、聯(lián)合體與枚舉 208
12.1 結(jié)構(gòu)體簡(jiǎn)介 208
12.2 結(jié)構(gòu)體的使用 208
12.2.1 結(jié)構(gòu)體的定義 208
12.2.2 結(jié)構(gòu)體變量 210
12.2.3 結(jié)構(gòu)體的初始化與
賦值 212
12.2.4 結(jié)構(gòu)體成員訪問(wèn) 213
12.2.5 結(jié)構(gòu)體大小 217
12.2.6 結(jié)構(gòu)體的位域 220
12.2.7 結(jié)構(gòu)體嵌套定義 223
12.3 結(jié)構(gòu)體作為函數(shù)的參數(shù) 224
12.4 結(jié)構(gòu)體指針 226
12.5 結(jié)構(gòu)體數(shù)組 228
12.6 聯(lián)合體簡(jiǎn)介 230
12.7 聯(lián)合體的使用 230
12.8 枚舉簡(jiǎn)介 232
12.9 枚舉的定義和成員引用 233
12.10 枚舉的應(yīng)用場(chǎng)景 234
12.11 本章小結(jié) 236
第13章 C 語(yǔ)言中的內(nèi)存
管理 237
13.1 內(nèi)存管理簡(jiǎn)介 237
13.2 內(nèi)存管理相關(guān)函數(shù) 238
13.3 綜合代碼示例 243
13.4 鏈表的基本操作 245
13.4.1 單向鏈表 245
13.4.2 雙向鏈表 249
13.5 本章小結(jié) 252
第14章 C語(yǔ)言中的文件
處理 253
14.1 文件處理相關(guān)函數(shù) 253
14.1.1 文件操作簡(jiǎn)介 253
14.1.2 文件的讀寫(xiě)操作 255
14.1.3 文件的拷貝操作 258
14.1.4 文件指針 262
14.4.5 文件的其他操作 266
14.2 綜合代碼示例 266
14.3 本章小結(jié) 269
第15章 C語(yǔ)言中的預(yù)
處理 270
15.1 預(yù)處理簡(jiǎn)介 270
15.2 頭文件包含 270
15.2.1 多文件編譯 271
15.2.2 外部變量的引用 275
15.3 gcc 編譯器 276
15.3.1 gcc 編譯器簡(jiǎn)介 276
15.3.2 GCC 編譯器的使用 277
15.4 宏 280
15.4.1 簡(jiǎn)單的宏替換 281
15.4.2 帶參宏 282
15.4.3 串行化 282
15.4.4 連接符 283
15.4.5 斷言宏 283
15.4.6 預(yù)處理編譯 284
15.5 條件編譯 285
15.6 本章小結(jié) 287
第16章 綜合示例 289
16.1 MVC 設(shè)計(jì)模式 289
16.2 項(xiàng)目需求 291
16.3 項(xiàng)目源碼實(shí)現(xiàn) 291
16.3.1 項(xiàng)目文件結(jié)構(gòu) 291
16.3.2 源代碼時(shí)間及解析 292
16.4 本章小結(jié) 302