您的位置:首頁>正文

如何才能精通C語言?

其實說到精通兩個兩個字, 其實作為一個做了多年的老程式師, 一般不敢提及這兩字, 要精通一門語言相當的難, 所以在簡歷上一般看到精通某種語言的描述, 總會找點犄角旮旯的問題考驗下, 不是內心的有多變態, 而是覺得不能褻瀆精通兩個字, 如果水準真不是到那種深不可測的程度, 輕易不要喊出, 作為程式師還是老實本分點好, 也問過一些做了十幾年的老程式師, 也會類似的感覺。

今天要說的其實是如何學好C語言, 如何在自己基礎還不是很牢靠的基礎上, 進一步去學習提升自己。

還有很多不是電腦專業的想學習C語言, 該做哪些準備, 在這嘗試著給大家分析下。

一. 先具備一定的電腦基礎, 為後續提升做好準備

是科班出身的直接學習C語言, 算是駕輕就熟, 相對來說障礙少一些。 不是電腦專業的上來基本的機制轉化都成問題,

到後來學習指標等比較難懂的技術點, 一些基礎環節的缺失該暴露了, 舉個簡單的例子:移位運算, 如果不懂的十進位轉到到二進位, 高八位元, 低八位元的規則, 沒點基礎很難搞明白。 這也就是為什麼很多非電腦專業的想學程式設計一直給推薦計算機組成原理的原因。

對於電腦專業的, 就可以直接起步學習C語言, 需要選擇一本比較不錯的書, 目前口碑不錯的書也不錯, 沒必要全部買了去學習, 第一次學習弄一本書就夠了, 在這推薦C程式設計語言, C primer plus, 這兩本書曾經在入門的時候用過。 覺得還不錯。

二. 都準備好了, 如何去學, 學習過程應該講究什麼策略?

有了一定的基礎了, 書本也準備好了, 肯定有人會說, 用跟著視頻學習也很不錯啊。 視頻學習簡單明瞭, 而且裡面的老師講的也比較清晰, 為啥還要選擇以書本為主。 很多人都喜歡看武俠電視劇, 看過原著的人再去看拍的電視劇總會覺得缺少點什麼, 視頻是對知識的高度提煉和濃縮的過程, 所以看起來非常簡單直接,

看似比較容易去學。 經過語言的加工提煉, 讓人一聽就明白, 但是這個加工提煉的過程不是學習程式設計的人自己搞的。

學習程式設計本質上就是建立自己知識體系的過程, 建立過程就需要一個提升思維認知的過程, 書本上的東西比較抽象, 看起來更加讓自己的大腦有遐想的空間, 更加容易讓自己去動腦。 在這強調一點不是說看視頻學習不對, 可以選擇性的來看。 以書本為基礎, 遇到實在不懂的點, 找到對應的知識點去看看視頻學習一下, 然後再去回歸書本。 在這個過程中很多人覺得我看視頻都聽得非常明白, 但是離開視頻讓我寫怎麼也寫不出來。 原因是聽明白和實踐明白是兩碼事, 多練才是硬道理。

三. 掌握常見的幾個大知識點

資料類型, 陣列, 函數, 指標, 結構體, 預處理, 檔等幾大塊。 真正難點集中在函數, 指標, 預處理看起來不是很難, 在很多大型軟體底層從效率考慮很多函數的實現直接採用巨集的方式, 對於初學者就不要考慮那麼多。

指標是整個C語言的核心, 回呼函數,以及資料結構都是圍繞指標展開。資料結構很多都是專門的一本書拿出來作為重點去學,本質上就是指標和結構體的搭配組合,形成各種資料結構,二叉樹,樹,鏈表等等。

對於指標的瞭解,指標就是一個變數,只不過這個變數和普通的變數有點差異存放的是位址,這個位址會指向一個記憶體區域,這個區域可以存放任何的數值,也可以繼續存放位址,二級指標就是這麼來的,指標在使用之前一定要初始化,初始化本質上就是給這個指標尋找一個真實的存在的記憶體區域。說起來挺簡單,但是在實際使用過程中,初學者往往會產生各種錯誤,這也屬於正常。開始挖坑,然後慢慢填坑,直到弄明白是啥意思,這個期間可能會比較痛苦,挺過來再去看其實也沒那麼難。

學的過程遇到瓶頸可以找對應的視頻看看,也可以留言說出你的困惑,知識點也就那就那幾個,弄一個少一個。總會結束的時候。

掌握大致的知識點之後,可以找一些小的項目練手,比如貪吃蛇,俄羅斯方塊等遊戲,代碼量相對比較小,但也能從側面提升編碼能力和對知識的認知程度。

四. 如何深層次的提升

用C語言做專案難點主要包含三點,查找記憶體洩漏,提升系統性能,搭建框架也合理。

由於C語言的指標使用的時候就需要初始化,基本上附帶著需要申請記憶體,如果記憶體不及時釋放,不停的申請就會造成記憶體洩漏。查找記憶體洩漏需要自己去寫鉤子函數抓住有多少人去申請了記憶體,然後抓住釋放函數,抓取資料然後根據指標的位址做比較,看看有沒有只是申請記憶體,但是沒有釋放的位址,抓出來了找到對應的代碼直接修改掉。

系統性能解決整體上有兩種策略,重新審視代碼邏輯,通過debug或者加列印的方式,一點點排除,做這種工作比較乏味而且還需要具體整體的把握能力,有一種對代碼的直覺包含在裡面。

搭建框架這個要求更高了,設計模組的框架整體來說都是遵循高內聚,低耦合策略。但是實際在開發過程中,可能為了方便直接就來回調用的很多。算是軟體發展的非常高的境界了。

這部分說的內容可能對於初學者來說,感覺還是比較遙遠,基本上算是程式設計老手做的事情。都會有從小白到高手的過程,也不要覺得現在水準很差就覺得自己沒有希望了,都是需要一個過程。千里之行始於足下。

作為初學者可以審視下自己現在學習到哪個階段了,差距還有多遠,要走的路還有多少。知己知彼百戰不殆。

如果對程式設計感興趣,想瞭解更多的程式設計知識,解決程式設計問題,以及入門指導,幫你解決程式設計中遇到的困惑,請關注本頭條號,大家一起學習,一起進步,一起熬夜加班。

回呼函數,以及資料結構都是圍繞指標展開。資料結構很多都是專門的一本書拿出來作為重點去學,本質上就是指標和結構體的搭配組合,形成各種資料結構,二叉樹,樹,鏈表等等。

對於指標的瞭解,指標就是一個變數,只不過這個變數和普通的變數有點差異存放的是位址,這個位址會指向一個記憶體區域,這個區域可以存放任何的數值,也可以繼續存放位址,二級指標就是這麼來的,指標在使用之前一定要初始化,初始化本質上就是給這個指標尋找一個真實的存在的記憶體區域。說起來挺簡單,但是在實際使用過程中,初學者往往會產生各種錯誤,這也屬於正常。開始挖坑,然後慢慢填坑,直到弄明白是啥意思,這個期間可能會比較痛苦,挺過來再去看其實也沒那麼難。

學的過程遇到瓶頸可以找對應的視頻看看,也可以留言說出你的困惑,知識點也就那就那幾個,弄一個少一個。總會結束的時候。

掌握大致的知識點之後,可以找一些小的項目練手,比如貪吃蛇,俄羅斯方塊等遊戲,代碼量相對比較小,但也能從側面提升編碼能力和對知識的認知程度。

四. 如何深層次的提升

用C語言做專案難點主要包含三點,查找記憶體洩漏,提升系統性能,搭建框架也合理。

由於C語言的指標使用的時候就需要初始化,基本上附帶著需要申請記憶體,如果記憶體不及時釋放,不停的申請就會造成記憶體洩漏。查找記憶體洩漏需要自己去寫鉤子函數抓住有多少人去申請了記憶體,然後抓住釋放函數,抓取資料然後根據指標的位址做比較,看看有沒有只是申請記憶體,但是沒有釋放的位址,抓出來了找到對應的代碼直接修改掉。

系統性能解決整體上有兩種策略,重新審視代碼邏輯,通過debug或者加列印的方式,一點點排除,做這種工作比較乏味而且還需要具體整體的把握能力,有一種對代碼的直覺包含在裡面。

搭建框架這個要求更高了,設計模組的框架整體來說都是遵循高內聚,低耦合策略。但是實際在開發過程中,可能為了方便直接就來回調用的很多。算是軟體發展的非常高的境界了。

這部分說的內容可能對於初學者來說,感覺還是比較遙遠,基本上算是程式設計老手做的事情。都會有從小白到高手的過程,也不要覺得現在水準很差就覺得自己沒有希望了,都是需要一個過程。千里之行始於足下。

作為初學者可以審視下自己現在學習到哪個階段了,差距還有多遠,要走的路還有多少。知己知彼百戰不殆。

如果對程式設計感興趣,想瞭解更多的程式設計知識,解決程式設計問題,以及入門指導,幫你解決程式設計中遇到的困惑,請關注本頭條號,大家一起學習,一起進步,一起熬夜加班。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示