博客專欄

EEPW首頁 > 博客 > C語言怎么系統(tǒng)化的高效學習?

C語言怎么系統(tǒng)化的高效學習?

發(fā)布人:編碼之外 時間:2021-05-07 來源:工程師 發(fā)布文章

今天給大家分享一個學習路線,也算是給這段時間C語言系列的一個總結,大家按圖索驥,能夠飛快的掌握C語言。


C語言指針很難學?給你最直接的解決思路!


首先我想說下,C語言是非常重要的語言。為什么這么說呢?原因在于C語言是連接了硬件和軟件的橋梁。


如果你學習Java,會發(fā)現(xiàn)自己是在Java虛擬機上,你要是用硬件功能,除了依賴系統(tǒng)API之外,就沒招了。



這也是為什么我說:你不會C語言,基本上就如同無根之草一樣,因為沒根基,上層建筑就是搖搖欲墜。



而在C語言這里,最為重要的一個環(huán)節(jié)是,操作系統(tǒng),這個龐然大物,直接支撐了各種開發(fā)需求,調(diào)度,快速的實現(xiàn)功能。


而C語言的學習,基本上保持一個路線,就是沒問題的:


1 基礎語法

2 練習,做筆記

3 數(shù)據(jù)結構與算法

項目,模仿

5 操作系統(tǒng)

6 反編譯逆向

7 設計原理


那么具體該如何學習呢?


1 基礎語法


  • 學習簡單的語法,if switch while ,各種變量聲明,函數(shù)定義

  • 簡單數(shù)據(jù)結構,鏈表指針操作

  • 內(nèi)存管理,申請釋放

  • 結構體使用,typedef ,#define 使用

  • 常見的庫,函數(shù)

  • 文件操作

  • 字符串操作

  • 作用域

  • 指針,回調(diào)函數(shù)


推薦書籍:(更多書籍文末免費獲取)


  • C primer plus

  • 小甲魚C語言

  • C與指針




推薦網(wǎng)站:



https://www.runoob.com/cprogramming/c-tutorial.html


視頻教程:



https://www.bilibili.com/video/BV1TT4y1F7Z9?from=search&seid=17613620503982455285


https://www.bilibili.com/video/BV17s411N78s/?spm_id_from=333.788.recommend_more_video.0


全部視頻清單,關注公眾號 程序員入門進階 后臺回復 C語言視頻我最棒  獲取全部鏈接。


學編程一定要記住一點:


語法永遠只是基礎,不是能力。如果你聽見誰說它學會了哪個語法,卻不會做項目,那么基本上等于白瞎,沒啥用,只是剛入門而已。


程序員之間的薪資差距,主要來自于一些抽象的能力,比如創(chuàng)造力,溝通力,解決問題的能力。


2 練習,做筆記


練習,第一個是所謂的課后題,多練習,把語法熟練的掌握,再一個就是去做筆記,把學到的知識進行歸類,總結。


很多人會有一個困惑,自己學了就忘了,等于沒學。這個解決方式就是做筆記,加深印象。


只看不做,基本白瞎的。一定要去動手,去調(diào)試,用VS開發(fā)或者codeblocks,都是沒問題的,如果你喜歡Linux,可以裝個虛擬機,或者cygwin去編程。


一些練習題:

https://www.runoob.com/cprogramming/c-100-examples.html


視頻講解:


https://www.bilibili.com/video/BV1ur4y1c7d2?from=search&seid=13029503385076204138


C語言# ##看的頭蒙?以實際應用場景剖析它!


3 數(shù)據(jù)結構與算法


當你學習完語法,或者是在學習的過程中,會遇到比較困惑的內(nèi)容,就是不知道如何描述物體,如何設計,這個原因是語法掌握了之后,這些東西都是零散的,不成系統(tǒng),你不會用。


當你用的時候,繞不過去的一個知識,就是數(shù)據(jù)結構與算法,因為這兩個合起來就是寫程序了。


一個物體描述出來,就是一個結構體,或者聯(lián)合體,然后通過一些函數(shù)調(diào)用,操作,影響數(shù)據(jù),最終提通過界面顯示,或者終端輸出,完成整個過程。


于是C語言學習語法完后,就是學數(shù)據(jù)結構與算法,一定要記得這個學完,才是入門了,才能真正的做項目了。


這里主要學習哪些知識呢?


  • 線性表


  • 隊列

  • 數(shù)組

  • 廣義表

  • 樹和二叉樹


  • 查找

  • 排序


書籍文末可以找到,視頻這里分享幾個:



https://www.bilibili.com/video/BV1Ut411g76f?from=search&seid=4659630938965125971



https://www.bilibili.com/video/BV1xK4y1U7Dc?p=4


項目,模仿


上面的這些學習完后,就要開始做項目了。而做項目的技巧是什么?先去找案例,教程學習,項目實戰(zhàn)。


當我們看完一個后,學會了如何去分析,開發(fā)一個新的項目。比如,如何描述一架飛機,它有哪些參數(shù),哪些方法。


是否可以飛,可以發(fā)子彈,是否碰撞,寬高。


這個在理解起來就是,內(nèi)部的結構,以及外部的關聯(lián)。對內(nèi)屬性,對外方法調(diào)用。


這個如果你理解了,那么算是學成精了,進入開悟階段。


這塊教你一個方法,直接百度搜索 C語言 項目 源碼 下載 ?;蛘呷ithub去搜索。


更多內(nèi)容,記得關注公號 :程序員入門進階。



5 操作系統(tǒng)


當這個階段完成后,后面就進入所謂的操作系統(tǒng)階段,這個邁過去了,就是開悟之坡的封神階段,會進入真正的輝煌階段。


而關于操作系統(tǒng),要學習哪些知識呢?


  • 操作系統(tǒng)的概念

  • 進程,線程的存在

  • 通信機制

  • 互斥鎖,消息

  • 死鎖,如何避免競爭

  • 虛擬內(nèi)存,進程間不可直接訪問

  • 分頁,分段,緩存的意義

  • 文件系統(tǒng)

  • 驅(qū)動加載


這邊推薦幾本書,《現(xiàn)代操作系統(tǒng)》《自己動手寫一個操作系統(tǒng)》,我自己當時是看著一本叫做《操作系統(tǒng)》的書,看了很久。


這塊建議看下《linux操作系統(tǒng)設計》,然后就去看下小型操作系統(tǒng),代碼少,好學習,這塊可以使ucos2,freertos,去學習中斷上下文,所謂的現(xiàn)場保護。


如果這塊學的不錯了,在進階一下,進入微指令,計算機組成原理,深入到計算機硬件這塊,會給你帶來質(zhì)的飛躍。




6 反編譯逆向


完成了操作系統(tǒng),就結束了?非也。下來會進入到世界顛倒的地方。反編譯。有誰會寫完代碼后,進行反編譯看看的?如果你這么做了,你一定是高手了。


因為你進入了自我探索階段,在開悟之后,就變成了所向披靡,而反編譯就是最好的切口。


這里推薦幾本書:《C++反編譯》《加密與解密》,加密與解密解決所謂的PE結構這些,說到這里又想起來了,《程序員的自我修養(yǎng)》《鏈接器與加載器》,一定要去讀,太經(jīng)典了。


這塊我當時使用的是OD破解器,現(xiàn)在IDa,做一些分析學習(現(xiàn)在不輸出這類內(nèi)容了,自己探索樂趣無窮,不想被煩擾)


當你看到代碼,能夠看到的是它的流動,就像俠客行里面,最后石中玉看到蝌蚪文的那個感覺,各個經(jīng)絡活躍起來,感受到代碼在流淌,而不是靜態(tài)的,這時候你才是真的熱愛編程。


這也是我喜歡的一個狀態(tài),一個在代碼世界的屠龍少年。


當完成了這些,會到所謂的大神階段,就是會游刃有余的解決問題,但是還處在孫悟空的階段,沒有大徹大悟。


最后一個,我們來說下終極思維。


7 設計原理


虛實結合,創(chuàng)造系統(tǒng),這個才是最終跳出束縛,完成所謂的天眼過程。所謂你永遠看不到真相,因為你一直在真相里面。


要想真正打通,最終完成的是所謂的設計,比如操作系統(tǒng)架構設計,模型,物聯(lián)網(wǎng)模型,協(xié)議,這些是在制定規(guī)則。


制定規(guī)則,是在創(chuàng)造過程。制定規(guī)則,是具有了主導的權力,一切皆在股掌之中。


好了,今天就聊這么多,更多內(nèi)容,敬請期待!


幫發(fā)轉(zhuǎn)發(fā)文章,便是最大的支持!


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: C語言

相關推薦

技術專區(qū)

關閉