前言
這是之前在網址上看到的一個問題,有很多學生也面臨着這樣的困擾。
現在大學裏基本都開設了計算機課程,看了那麼多技術書,但學了四年出來,仍然寫不出項目,這其實是有原因的。
那我們來看看真正的C/C++應該是怎樣學習?
一. C/C++語言
如果你的基礎很差, 要從C開始學起,對程序有個初步的認識,循序漸進。C語言的書可以先買一本 300 頁以內的,把書中的每一個例子都通過鍵盤敲打進去到 Visual studio裏面去,然後單步執行,逐行調試去看各個變量的值。或者自行添加一些printf語句去輸出變量的值。這樣當你看完一本書後, 你就有編寫小程序的感覺了。
接下來你就可以買一本C++的書看了。 C++的書也是一樣, 不要一來就想學《C++ Primer中文版》這樣的好書, 因爲太厚了,怕你沒有信心能夠看完,即使你很有信心,花費一年的時間纔看完,不值得。這種經典的厚的好書, 適合作爲資料查閱。
二. 帶界面的應用程序
學會了C/C++語言本身,可能還沒有什麼成就感,畢竟都是控制檯的程序, 老是輸出一串字符串, 整天面對各黑框框,成就感估計不是那麼爽。要是能搞個帶UI界面的程序就爽了。
下來就看個人的志向了, 如果走微軟路線, 那你下來學MFC好了,如果要走開源路線, 那開源跨平臺的界面庫多得是。把裏面的例子程序敲到你的 visual studio 裏面, 去調試, 看運行的結果, 你也可以試着去修改例子, 添加按鈕,響應按鈕事件等。
走到這一步, 恭喜你,可以照葫蘆畫瓢的搞個小應用程序了, 還帶界面。
三. 網絡應用程序
語言搞懂了,UI程序也會了, 下來該學學網絡咯, 現在那個程序不需要聯網啊,懂網絡對你理解很多程序非常有幫助。但是網絡應用程序從哪裏入手呢 ?
從《UNIX網絡編程》這本書入手吧,這本書可以教會你網絡套接字的底層原理,把上面的例子好好學習,自己動手寫一個迴應服務器。寫一個服務器端,在寫一個客戶端。服務器端請務必學會 select 這個簡單的多路複用模型,這樣你才能慢慢的深入裏面 poll , epoll ,IOCP 之類的模型。
四. 文件操作
所有的程序,基本都會用到文件的讀寫操作,windows系統有自己的文件操作API, 比如CreateFile, DeleteFile 等, 新手請學標準C語言的文件操作函數,簡單易學還跨平臺。就那麼幾個函數,三下五除二你也就學會了, fopen, fclose, fread , fwrite, fseek, ftell 就這麼幾個而已。
五. 深刻理解內存與指針的關係
作爲一個C/C++程序員, 從學習程序的頭一天開始,就要和內存的分配釋放作鬥爭。你必須理解內存與指針的關係。怎麼樣才能理解呢, 請大家去看 《高質量C/C++編程》裏面自帶的幾個經典例子吧。把那幾個例子搞得清清楚楚, 基本能夠理解其中的原理了。
六. 仔細研究apache源碼
學程序非特別是C/C++程序,非3年之功可以出山,三年對一個C/C++程序來說是一個從量變到質變的過程,三年的項目實戰經驗,可以讓你接觸到一個完整的應用程序所需要具備的骨架。
但是這個階段你寫的代碼,可能充滿BUG, 會宕機,運行效率很差,自己回頭看看一年前寫的代碼,可能自己都感覺噁心, 看不下去。沒有關係,這種感覺是每一個進步青年都會有的。
要提高自己的代碼水平, 還是要像高手學習。
七. 修煉C++
要修煉C++, 還得再花3年功夫, 纔有可能練成C++高手。
C++太博大精深了,其中最複雜的莫過於泛型編程思想,不要以爲能寫個模板類就認爲泛型編程不過如此而已。仔細看看STL源碼, Boost 源碼, 你就知道泛型編程有多麼的博大精深了。
修煉C++, 可以從用C++封裝的MFC, wxWidget入手, 看高手如何通過C++語言, 封裝這樣龐大的UI庫,裏面應用了很多的C++機制, 最典型的就是多態機制, 還有很多的設計模式應用可以研究。
文章福利
對於自己找不到視頻、書籍資源的讀者,可以加小編的C語言/C++交流羣:967051845!整理了一些個人覺得比較好的學習書籍、視頻資料共享在羣文件裏面,有需要的可以自行添加哦!~
VS編譯器,圖形庫
C語言相關電子書
C/C++基礎視頻及筆記
C/C++項目實戰
日積月累,終有所成!!!