<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 學(xué)習C語(yǔ)言基本思路與參考書(shū)籍【強烈推薦】

學(xué)習C語(yǔ)言基本思路與參考書(shū)籍【強烈推薦】

作者: 時(shí)間:2015-07-14 來(lái)源:網(wǎng)絡(luò ) 收藏

  計算機行業(yè)發(fā)展非???,大學(xué)里的教育基本都跟不上實(shí)際的社會(huì )需求。如果你所在的學(xué)校還在指定大家使用譚浩強的教材,或使用來(lái)教大家上機實(shí)驗,那你不妨看看本文,這里有一些建議可以幫助你不會(huì )脫離社會(huì )太遠。

本文引用地址:http://dyxdggzs.com/article/277225.htm

  考慮到這是一個(gè)過(guò)來(lái)人感覺(jué)很基礎,但是對于初學(xué)者又覺(jué)得困難重重的問(wèn)題,我想如果這篇文章要想寫(xiě)得不讓你覺(jué)得專(zhuān)業(yè)名詞扎堆,內容高深莫測,讀完還是不知所云,那最好的辦法也許是,我們通過(guò)溝通的方式把整個(gè)「應該怎么學(xué)」的問(wèn)題由小及大的展開(kāi),慢慢來(lái)談。

  在開(kāi)始之前,我們先來(lái)做一個(gè)小測試。

  一、小測試,你準備好學(xué)習了嗎?

  1. 你是否聽(tīng)說(shuō)過(guò)二進(jìn)制數,他們是如何進(jìn)行運算的?(基本的數的進(jìn)制知識)

  2. 你能說(shuō)出一個(gè)最小的計算機系統由哪些部分構成嗎?(基本的計算機結構知識)

  3. 計算機是如何存儲圖像的? (數字化原理)

  上面這三個(gè)問(wèn)題,能回答的同學(xué)舉手。如果你舉手了,那么我們進(jìn)入下階段的討論,否則,我將告訴你,你現在最重要的事情,是趕緊找一本《計算機科學(xué)導論》把預備知識補充好。

  因為——

  說(shuō)到底是一門(mén)以?xún)却鏋橹行牡木幊陶Z(yǔ)言,你能不能學(xué)懂它,其實(shí)很大程度上不是取決于你智商高低,而是你是否擁有扎實(shí)的計算機結構、存儲、運算原理方面的知識!!

  在這里,我想強調,任何新知識的學(xué)習都是有一定的前提條件的。C語(yǔ)言學(xué)習的前提條件就是,對計算機系統要有一個(gè)整體的,科學(xué)的基礎認識。脫離了這個(gè)基礎認識,一切都很困難。

  所以,有些同學(xué)學(xué)不會(huì )C語(yǔ)言,不是因為他們智商不行,而是因為他們沒(méi)有準備好。

  我花時(shí)間寫(xiě)這篇文章來(lái)給大家講C語(yǔ)言的學(xué)習,當然是希望大家真正的學(xué)會(huì )、學(xué)懂C語(yǔ)言,并能夠真正感覺(jué)到它的用處,所以很抱歉我不會(huì )像培訓機構那樣,告訴你“零基礎”就能夠開(kāi)始學(xué)。但如果你真的按照我說(shuō)的去做,那么至少從現在起,你確實(shí)是開(kāi)始有點(diǎn)“學(xué)院派”的認真了。

  在這篇文章的最后,我推薦了一本我曾經(jīng)讀過(guò)的《計算機科學(xué)導論》。這本書(shū)可以說(shuō)是我的啟蒙書(shū),我讀過(guò),真心覺(jué)得好,所以推薦給需要的同學(xué)。

  好了,接下來(lái)我們進(jìn)入C語(yǔ)言的學(xué)習過(guò)程。

  二、學(xué)C語(yǔ)言到底學(xué)些什么—— 「語(yǔ)法」和「函數庫」

  C語(yǔ)言學(xué)習的關(guān)鍵,是要先搞明白,學(xué)C語(yǔ)言到底是在學(xué)些什么?

  我這么一問(wèn),有的同學(xué)就要翻開(kāi)課本,指著(zhù)目錄說(shuō),我知道我知道,有變量,數據類(lèi)型,循環(huán)語(yǔ)句,函數,哦哦哦,還有指針等等!

  很遺憾,如果你以為學(xué)習C語(yǔ)言就是學(xué)習這些東西,那你得趕緊糾正一下看法,否則接下來(lái)的學(xué)習會(huì )困難重重。因為我曾經(jīng)就是這么掉到坑里的,這種狹隘的觀(guān)點(diǎn)讓我浪費了大量的時(shí)間去學(xué)習瑣碎的細節,又讓我遲遲不能接觸到更重要的知識,結果是眼高手低——知道許多別人不知道的無(wú)用知識,但是又寫(xiě)不出什么真正像樣的程序來(lái)。

  所謂「語(yǔ)法」,就是入門(mén)教材里最著(zhù)重講解的內容。也就是那些所謂的變量、數據類(lèi)型、分支判斷、循環(huán)、函數、指針等等。

  這些內容比較枯燥,但是好消息是這些內容并不難,都是一些格式化的東西。只要你多練習,就會(huì )自動(dòng)的刻在你的腦子里,成為一種下意識的習慣。

  但是 「語(yǔ)法」本身其實(shí)沒(méi)什么用。因為它只是一種格式規范,你學(xué)得再好,也不能引導你寫(xiě)出厲害的程序。因為在軟件設計中,實(shí)際上最核心的部分還是在于其 「函數庫」部分。

  什么是 「函數庫」?

  簡(jiǎn)單來(lái)說(shuō),函數庫就是別人編寫(xiě)好的C函數,直接提供給你用,你只要調用里面的函數,就能實(shí)現一定的功能。例如 printf() 函數,你肯定知道,只要調用這個(gè)函數,你就能夠在那個(gè)黑糊糊的窗口里顯示一段文字。你并不明白 printf() 的內部工作原理,但是你知道你只要按照說(shuō)明去調用,就能夠實(shí)現對應的功能。

  這就是函數庫——別人寫(xiě)好的,打包送到你面前,你可以自由調用來(lái)做各種各樣的事情的函數集合。

  我來(lái)說(shuō)幾個(gè)來(lái)自函數庫的函數,例如 CreateWindowEx() 函數可以用來(lái)創(chuàng )建一個(gè)窗體(這個(gè)函數由微軟提供),例如 GaussianBlur() 函數可以用來(lái)對一個(gè)圖像進(jìn)行高斯模糊處理(這個(gè)函數由 OpenCV 提供),再比如 evhttp_new() 函數可以創(chuàng )建一個(gè) HTTP 服務(wù)程序(這個(gè)函數由 libevent 提供)……

  其他還有什么庫函數?太多了。從控制網(wǎng)絡(luò )通信,到截取視頻畫(huà)面并分析其中的人臉位置,到加解密本地文件,甚至包括微信收發(fā)消息,抓取淘寶商品信息……庫函數的數量和有用程度遠遠超乎大家的想象。

  誒?你從來(lái)沒(méi)聽(tīng)說(shuō)過(guò)還有這些東西?課本里也沒(méi)提到?

  那是因為你看的是入門(mén)教材,著(zhù)重講解語(yǔ)法,順帶提到了少量的 C 語(yǔ)言自帶的庫函數而已。事實(shí)上 C 語(yǔ)言包含的庫函數本身就有不少,但是更多更強大的還是許多第三方庫函數,例如我上面提到的這些。

  重點(diǎn)是在于,我想告訴你,庫函數才是你學(xué)習C語(yǔ)言并將其應用于實(shí)際的關(guān)鍵!!

  學(xué)會(huì )調用別人的庫函數,甚至寫(xiě)出自己的庫函數,都是極其重要的。因為一個(gè)函數,本質(zhì)上就是一個(gè)功能單位。你擁有的基礎設施越多,你的發(fā)揮空間越大。道理就是這么簡(jiǎn)單。這就是我需要向大家強調的第二個(gè)觀(guān)點(diǎn),要想寫(xiě)出實(shí)用的C程序,一大關(guān)鍵就是研究并學(xué)會(huì )使用各種庫函數。

  你看見(jiàn)隔壁王二寫(xiě)了個(gè)三維程序能讓一個(gè)彩色的立方體在空中旋轉?快找 OpenGL 庫函數來(lái)用。什么?劉大寶寫(xiě)了個(gè)網(wǎng)絡(luò )軟件能在局域網(wǎng)里聊天?快找 Socket 庫來(lái)用。

  看見(jiàn)了嗎?庫函數有多重要?

  但是,函數庫的學(xué)習并不是孤立的。許多庫函數背后需要一定的領(lǐng)域知識支撐。同樣如我第一個(gè)觀(guān)點(diǎn)所述,需要預備知識。學(xué)懂一個(gè)函數庫,代表的不僅僅是明白如何調用那么簡(jiǎn)單,而更反映了我們對一個(gè)特定領(lǐng)域——網(wǎng)絡(luò )、數字圖像、密碼學(xué)、操作系統等的認識。

  三、基本的學(xué)習過(guò)程與一般規律

  如我前面所述,C語(yǔ)言學(xué)習主要是以語(yǔ)法入門(mén),然后到函數庫。再具體一些來(lái)說(shuō),包括以下階段:

  1. 學(xué)習基礎語(yǔ)法

  2. 學(xué)習簡(jiǎn)單的少數幾個(gè)C語(yǔ)言自帶的函數

  3. 學(xué)習一些程序設計的基礎知識(數據結構,算法)

  4. 學(xué)習更多更強大的C語(yǔ)言自帶的函數

  5. 學(xué)習一些特定應用領(lǐng)域的基本理論知識(操作系統,數據庫,網(wǎng)絡(luò ),圖像……)

  6. 應用上一階段學(xué)習的到知識進(jìn)一步學(xué)習其他人提供的函數庫(網(wǎng)絡(luò )處理、操作系統管理、圖像、密碼學(xué)等等)

  對于本科階段的同學(xué)來(lái)說(shuō),著(zhù)重學(xué)好1-4,有選擇的學(xué)習一下5-6,做一些小作品出來(lái),就已經(jīng)非常非常不錯了。這就是一般的學(xué)習規律。說(shuō)得很簡(jiǎn)短,但是要做到真的很不容易。

  四、參考書(shū)籍

  首先第一本,也是我認為最重要的書(shū),是這本《計算機科學(xué)導論》??梢哉f(shuō),這本書(shū)是對我人生影響最大的兩本書(shū)之一。這本書(shū)通俗易懂,知識面廣,但又具有一定的深度。真是因為讀了這本書(shū),才讓我建立了對計算機科學(xué)合理的基本認識。在不涉及太多的數學(xué)原理的情況下,這本書(shū)清晰的揭示了包括計算機的基本構成,CPU運算的原理,內存、硬盤(pán)、光盤(pán)是如何存儲數據的,編程的基本原理(機器語(yǔ)言、匯編語(yǔ)言,結構化編程語(yǔ)言,面向對象編程語(yǔ)言),以及網(wǎng)絡(luò )、數據壓縮等。

  說(shuō)白了,就是一本科普書(shū)。但是是一本偉大的科普書(shū)。入門(mén)者的福音書(shū)。

  

說(shuō)明: http://pic1.zhimg.com/e12a7dfd9919f8411f43eeb4152f8610_b.jpg

 

  然后,第二本,就是關(guān)于C語(yǔ)言語(yǔ)法的書(shū)籍了,說(shuō)實(shí)話(huà)這部份我已經(jīng)沒(méi)有印象看的什么書(shū)了。因為我這個(gè)人有個(gè)毛病,就是喜歡東翻翻,西翻翻,哪里不懂就到處找書(shū)??梢?jiàn)這個(gè)部分其實(shí)沒(méi)有大家想象的那么固定,你只要找到一本自己看得懂的書(shū),就是好書(shū)!不必太過(guò)于拘泥于書(shū)與書(shū)之間的優(yōu)劣比較。

  最經(jīng)典的C語(yǔ)言入門(mén)書(shū)籍許多人肯定要說(shuō)是 K&R 的那本。但是其實(shí)這本書(shū)對大多數初學(xué)者來(lái)說(shuō)還是略難,如果有興趣也可以讀一讀。但我更建議你了解一些C語(yǔ)言之后再轉過(guò)來(lái)看看會(huì )更好。

  柴田望洋的《明解C語(yǔ)言》最近是一本廣受歡迎的親切的C語(yǔ)言入門(mén)書(shū)。昨天我專(zhuān)門(mén)到書(shū)店翻了一下,這本書(shū)確實(shí)很不錯,親切,謙虛,易懂。但我想也未必適合所有人。如果你是希望學(xué)習曲線(xiàn)平緩一些的,可以考慮看看。

  

說(shuō)明: http://pic2.zhimg.com/a86f52cb9d043e1b38389c8e3510a971_b.jpg
啊,差點(diǎn)忘了,還有一本咱們國內的趙巖先生寫(xiě)的《C語(yǔ)言點(diǎn)滴》也有不錯的反響,也許大家也可以找來(lái)看看。 

  

說(shuō)明: http://pic2.zhimg.com/71415eb8211777be63311ebe5a23f269_b.jpg
        基本上,上面這些書(shū)就能幫助你比較輕松的入門(mén)了。其他書(shū)籍推薦,我會(huì )陸續也寫(xiě)出來(lái)。今天實(shí)在寫(xiě)不了這么多了。

  但是,再補充一本,如果對于那些已經(jīng)學(xué)得差不多的同學(xué),必須得看看下面這本,這是我的至愛(ài)之一啊!^_^ 那就是吊炸天的《C Standard Library》,china-pub鏈接:C標準庫(C標準庫“圣經(jīng)”)

  好好看看這本書(shū),它是真正的頂級教材,因為——里面包含了標準庫實(shí)現的完整源碼,以及作者在實(shí)現時(shí)的思路講解。是一本值得收藏的超級力作。讓我們一睹頂級程序員的思維杰作。(吐嘈:這本書(shū)的翻譯還是有一些值得修正的地方,所以能收英文版的同學(xué)就直接收英文版了)

  

 

  這幾本書(shū)其實(shí)并未涵蓋C語(yǔ)言學(xué)習的所有重要方面。稍后我會(huì )再放上一些來(lái)。今天打字打到手疼,就不繼續了。

  五、晉級——通向更高境界之路

  學(xué)無(wú)止境。更專(zhuān)業(yè)的學(xué)習至此其實(shí)才剛剛開(kāi)始。

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程




關(guān)鍵詞: C語(yǔ)言 VC6.0

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>