tft每日頭條

 > 生活

 > c語言自學能學好嗎

c語言自學能學好嗎

生活 更新时间:2025-03-13 15:52:07

臨近過年,很多同學也是剛剛結束了上半個學期的考核,很多初學C語言的小夥伴都在思考這半年下來學的怎麼樣了?因為在學習之初并沒有一個大概的概念,學習這門語言需要掌握多少知識點,現在還是比較的迷茫。

c語言自學能學好嗎(到底怎麼樣C語言才算入門)1

C語言的精髓點在哪? 學到多少東西才能夠達到做項目的标準?學習的時候需要注意哪些細節點?疑問太多以至于壓得自己喘不過氣來。小編從項目的角度分析C語言到底需要掌握哪些知識,為什麼要去掌握這些點,怎麼去掌握,在此嘗試着總結以下幾點,未必都是對的,起碼可以做到親身經曆。

基本的數據操作,運算規則,常見程序結構設計

很多人覺得這麼幾點我都看了多少遍了,早就爛熟于心了。舉個簡單的例子,printf打印可能是最常使用的函數了,但是這個函數在真正大型工程中,很少直接去調用,為什麼?

主要項目中涉及到封裝的概念,什麼時機加入打印在調試大型系統的時候,更容易定位問題,這些編程思維對于初學者來說很難接觸到,也很難想到,任何複雜的事物都是由簡單的細節環繞而成,在學習之初不要覺得這些很簡單的數據操作很簡單,要真正納入自己的知識體系還是需要花點心思。可以在學習的時候,網上搜一些資料看這些數據操作以及運算規則是如何使用具體的場景中。

很多人初學者可能會有疑問覺得去哪裡找這些代碼去,世界軟件發展了這麼多年,最不缺的就是代碼,在github或者開源中國裡面代碼多如牛毛。學習的對象也是數不勝數。有點扯遠了,這觸及到另外一個學習編程的步驟,學會看懂别人的代碼,然後才能嘗試寫出優質的代碼,知己知彼百戰不殆。曾經聽一個編碼高手說過“技術這東西隻要花的時間長,肯下功夫早晚都能搞定,隻要進入狀态了,什麼方法都能想的出來”,看書學習也罷,看視頻學習也罷,需要讓自己插上聯想的翅膀,把自己的思維境界打開。

c語言自學能學好嗎(到底怎麼樣C語言才算入門)2

指針,數組,結構體,枚舉靈活運用

不要隻看這幾個字,幾乎是C語言裡面最精髓的代表。數組這個概念基本上還能理解透徹,說到指針這個應用場景太多,而且在什麼項目中幾乎都離不開指針的使用。變化無窮,會用的覺得其樂無窮,不懂的哭上天。記得在互聯網有個流傳很長時間的文章,林銳的我的大學十年(有興趣的同學可以去網上查閱,編程的人生也可以很彪悍,記得當初發燒期間還專門買了林銳的一本高質量編程)提到了做了一個C語言的項目,為了繞開指針最後全部用數組代替實現了,後來做的項目也黃了。不是說因為用數組使用就不行,項目的定位方向出問題了。用數組完全替代指針這條路也是可行的,但是會花費相當大的周折。

說到指針,不能不提到計算機專業開的另外一個課程,數據結構。數據結構就是原生數據或者組合數據的混合運用的一種規則集合。連接這些數據,将這些數據有機的串聯在一起,指針起到非常關鍵的作用。經常見到初學者說數據結構和天書差不多,幾乎看不懂,建議回爐好好學習指針,說到指針還是存在很多故事,在入門之初有幸遇到一位水平極高的老手帶着,基本功紮實的不得了,記得有一次使用指針忘記初始化,這老手歎了口氣,當年我每次用指針錯一次,就被項目經理當衆批評一次,後來再也不敢不初始化使用了,所以印象才能這麼深刻,話說到這裡剛入門的小白挨多少批評或者鄙視,是最正常不過的事情了,這對于編程界來說稀松平常。

結構體在項目中用的特别多,很多初學者覺得結構體都在教材的最後章節,覺得不是那麼重要。其實結構體在一定層次上決定着軟件的脈絡框架。很多高手在設計模塊的時候,不是急急忙忙的寫代碼,而是先把頭文件裡面的結構體設計出來,簡單的來說就是把數據模型先搞起來。有個數據模型代碼實現起來就比較輕松了。面向對象裡面類的老祖宗就是結構體延伸來的。關于結構體如何賦值,包含着指針的情況下,如何賦值這些都是常見的初學者經常容易掉的坑。枚舉一般用在羅列不同類别,存在多個相同功能的實物,搭配switch使用的很多,在這就不一一列舉了。

c語言自學能學好嗎(到底怎麼樣C語言才算入門)3

函數的使用

函數是面向過程編程最基本的單位,任何C程序的運行都有函數的身影,因為程序的入口main就是一個函數,函數傳值方式,調用方式(遞歸,回調)都是函數内在的表現。函數的裡面又可以嵌套别的函數,使得程序慢慢變得複雜化。前幾天和一個非計算機專業的聊天,談到如何學習函數,說到了數學不好是不是編程不好學。函數的編程基本因子,和數學裡面的函數有一定的共性,但編程裡面的含義引申的層次更多,數學在一定層面就是提供一個工具或者方法而已,函數的設計裡面夾雜着諸多的編程思想。

檢驗一個程序員水平的高低可以簡單讓用函數實現一個相對複雜一些的功能,基本上就能看出編程思想掌握的深淺程度。不妨自己實現一個函數,檢驗下自己編程水準,函數的檢驗是面試裡面必不可少的題目。

一個函數基本上代表一個小的模塊,多個模塊有機的組合形成一個系統。建議初學者在學習函數的時候,不要滿足于會使用函數,還要讓自己站的層次更高一點。這能決定自己是一個純粹的執行者還是未來框架的設計者,不要覺得這些東西距離自己很遠,慢慢的積累時間長了,慢慢也就從量變變成質變了。

c語言自學能學好嗎(到底怎麼樣C語言才算入門)4

對于内存和性能有少許的理解

内存和性能對于初學者來說,可能覺得很遙遠,其實這兩樣東西貫穿整個編碼界,檢驗軟件功能最重要的兩項指标,軟件占用内存多少,運行時間長了會不會讓系統變緩慢。同時開啟在多個軟件的時候,你設計的軟件是不是變得很卡頓,這些都是大家平常在使用軟件時候經常遇見的現象。今天在車上閑聊,司機說當年的XP運行的多好,非要升級搞什麼windows7或者windows10之類的,把電腦搞的卡的要死。這其實是微軟操作系統設計理念的一個延伸,用空間換時間。說的通俗點,提前把一些常見的軟件加載到内存裡面,使用的時候流暢度會感覺好一些,理念這麼好,為啥還變得這麼卡慢,主要機器配置太低了。微軟這幫大佬認為你機器内存和CPU還是相當不錯的,因為現在硬件成本基本上接近白菜價了。在機器配置還不錯的情況下,windows7,10運行的速度還是很不錯的。透過這些生活常識,歸結對編程,對編碼的認知程度上,慢慢就會建立起自己的知識體系。

這點在嵌入式設備上表現的很明顯,一般嵌入式設備内存和cpu配置不是高,内存就要省着點用,占用CPU很高的一些函數盡量少去調用,避開雷區,這些經驗就要靠平時多去積累,多去思考,才會融入自己知識體系,才會慢慢認識到寫代碼其實在編程時候,隻占很小的一部分,大部分的時間還是在思考如何讓代碼更加利索,内存更少的去使用,cpu占用率低一些。認識到這些時候,層次就不一樣了,就會越來越覺得設計思想的重要性了。

c語言自學能學好嗎(到底怎麼樣C語言才算入門)5

唠唠叨叨說了以上四點,可能和裡面具體的概念不是很搭邊,主要站在項目的角度上做了一些延伸,從項目的角度去認識一些基本的概念,讓初學者在學習的時候,有個大緻的認識。在知識層次上面稍微做了一些拉伸。稍微上了一點高度,滲入了一些編程思想。希望初學者對此有一個更加深刻一點的認識,不要拘泥于語法的限制,編程語言服務于編程思想。學到了真正的編程思想,才叫貨真價實的懂編程。

其實初學編程最容易進的誤區就是太重視語言本身,認為一門語言就是一項技能,實際上你需要學習的是語言背後的平台體系賦予語言的功能特性。學會一門編程語言後學另一門的語法是非常快的事情,但是掌握一個平台體系要麻煩得多。

光學語言不去了解平台體系會導緻什麼後果呢?比如你已經學好C語言,精通各種數據結構,内存管理之類早已熟爛于心,但是這時讓你編寫一個可以支撐大量用戶同時連接的服務器程序,你有思路嗎?如果你沒有了解過平台為高性能應用開發提供的特性(線程池、完成端口之類),那肯定完全沒有任何頭緒。

不要為了學語言而學語言,根據需求來确定自己需要用的是什麼語言再考慮要不要學吧。至于C語言學到什麼程度,看看你是不是已經能用它和它背後的平台來解決很多實質性的問題吧,而不是停留在語法、算法、理論層面。

如果作為初學者,能看得懂數據結構裡面的代碼,學到能了解各種常見函數,理解指針,結構體的程度,就馬上應該跳出來做個小遊戲小東西(俄羅斯方塊或者貪吃蛇之類的都不錯),然後跳下一步的學習,比如數據結構、c 、windows之類的,最好不要沉迷在裡頭,畢竟語言終究隻是工具,就就好像語文一樣不可能一輩子都在學寫字背成語。

c語言自學能學好嗎(到底怎麼樣C語言才算入門)6

唠唠叨叨說了這麼多,希望能夠幫到大家一些什麼,這裡也是專門整理了一些c/c 相關的基礎資料和項目解析,感興趣的同學可以私聊分享,希望大家能夠在新的一年裡越來越好。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved