03.02 為什麼很多人覺得C語言只要學會了指針基本上差不多掌握這門語言?

大學生編程指南


從事嵌入式開發十幾年,只要使用的編程語言有三種,C/C++ Java三種,其中C語言使用的時間最長,這門編程語言的最大特別是語法細節簡介,但是靈活性非常強,從大的方面看要真正掌握一種編程語言,需要真正的項目實戰,只是停留在理論層面上很難認清編程語言背後的本質,記得剛學習C語言階段,基本上一個多月就把基礎語法學習完了,並且做了大量的實習題目,覺得這門編程語言就這麼回事了。

於是從學校的圖書館裡面借了一本將近1000頁的linux內核講解書籍,開始先從戰略上藐視對手,在戰術上重視在開始幾十頁進展的還是比較順利,始終覺得掌握好了基礎的語法,後面的就是變通和靈活運用的問題了,還能變出什麼么蛾子結果,看到後面簡直就是在閱讀天書了,才知道了自己認識的淺薄,只是掌握點語法皮毛就想著挑大樑這種想法在編程行業顯得非常的幼稚,編程行業除了理論之外實戰經驗顯得非常重要。

回到題目中的C語言的核心知識點指針,C語言關鍵語法點指針,數組,結構體,回調,遞歸,函數等等,剩下就是這些個概念在項目實戰中的應用了,指針對於初學者來講就是一種雙刃劍,如果真的掌握理解了,能在編程中提升非常大的效率,如果沒有掌握對於很多初學者來講就是一種折磨,很多人覺得學不好C語言版本的數據結構,其實很重要的一個障礙就是指針,如果對於指針瞭解清楚,再去切入數據結構的學習就會顯得輕鬆許多,指針作為C語言裡面最重要的語法一點不為過,但是認為掌握了指針C語言就會顯得非常膚淺。

任何一種編程語言的背後都是大量的編程模式以及編程的套路,這些只有在真正的項目實戰中才能掌握,而且對於一種編程語言越是做的時間長越是覺得自己的膚淺,更加不敢稱之為精通,倒是現在很多初生牛犢在簡歷上寫上精通幾種編程語言,越是乾的時間長越是忌諱提到精通兩個字眼,所以講只是掌握了指針就說掌握一門編程語言的一半顯得認識不足,真正掌握編程語言還是靠項目實戰,不是所謂幾個重點語法這麼簡單的事情。

學習一種編程語言需要掌握幾個重點要素,首先掌握理論基礎,世要真正的明白,雖然編程語言是一種實踐性的語言,但實踐的前提是掌握理論基礎,很多人不懂C語言的指針就是因為沒有徹底明白指針的含義,只想著快點追趕進度,結果欲速則不達,越是重要的概念越是要徹底掌握明白;第二點就是實戰,在掌握理論基礎上就是通過項目實戰獲取經驗,紙上談兵永遠也不做不了真正的項目,想盡一切辦法去做項目實戰,沒有別的途徑,直面問題的本質,希望能幫到你。


大學生編程指南


很高興能回答你的問題

C語言作為編程老祖,很多軟件工具腳本都是用C語言或C++來編寫的。那麼C語言到底學成什麼樣才算學的比較好?

我上大學一年級的時候,就開始接觸C語言了,C語言自認為學的還可以。像數據、變量、循環、判斷等都是手到擒來。但學到第8章,也就是學到了指針那一塊,就感覺有一點懵了,老師也說指針是比較費腦力的,死記硬背是不可取的,需要理解它的含義。

在學習指針之前,基本都沒了解面向對象是什麼意思。但學到了指針就懂得面向對象與面向過程的差異。(簡單來說,前者就是以對象為基礎,設定其屬性啊,行為等。後者就是以完成它的過程為主,比如說:計算兩個數相加。前者可以設計為小貓計算兩個數,也可以是小貓2......,而後者就是計算,而且可以具體到是哪兩個數相加。)面向對象對於現在的編程語言還是很重要的。

個人覺得,指針與面向對象密切相關,導致在C語言中指針就變得尤其重要,像我後面學習的Python、java就沒有指針一說,但出現了很多類。相對C語言來說,多出了很多很多類。可能是指針被封裝起來了吧。

更多精彩,敬請期待!


科創陳


指針沒什麼難理解的,問題在於“地址”這個更基本的概念不清楚。

一個變量有兩個屬性:值和地址。

值存放在存儲器中相鄰的幾個存儲單元中,佔幾個單元、值怎麼解釋由變量的類型決定。

這些單元在哪裡由起始地址表示,高級語言一般不關心地址,因為編譯和鏈接過程會自動分配地址。

指針變量是特殊的變量,它的值是另一個變量(或數組,或者函數)的地址。通過它可以間接使用它所“指向”的存儲單元,這和直接使用這些存儲單元是一樣的。


ScholarMartin


同意。

指針是C語言的精髓,但也是它最受到爭議的地方。成也蕭何,敗也蕭何。

要弄懂指針,就需要弄懂C語言的數據結構,直到字節級別。C語言是簡約的,簡單就是美。


gzluke


不管什麼語言,紮實的數學功底,是決定你能走多高的決定因素。語法用得再熟練,不懂算法,也只能是個碼農。


白狐2205


c語言是結構性(相對面向對象編程語言)高級編程語言。單純語言本身來講,語法結構大致類同。c語言的一大特點是對內存操作的靈活性,如果理解了對內存操作和管理的知識點,基本就掌握了這門語言。而指針便是c語言對內存操作的金鑰匙。要想掌握c語言,也必須要精通指針相關知識點。


玩編程


掌握語言很簡單,個把月就好了,但是拿來做項目就沒那麼容易。沒有幾年項目經驗的歷練,就跟英語文盲一樣,一口流利的英語,可惜啥也不會。


阿拉河南人


指針遠遠不是C語言的全部,

只是在C語言學習道路上相對而言比較難理解的一塊。

畢竟從一個高級語言的角度去理解地址,比較抽象。

作為一個高級語言,數據類型,流程控制,函數這些才是高級語言的重點。

說差不多掌握這門語言,應該就是指的指針的難度,和學習的耗時。


zhangyiant


我覺得非計算機電類專業的,幹嘛要學C呢!

既然要學C,怎麼滴也要有點組成原理編譯原理方面的基本功吧!


夏夏65246721


誰說的?學會一詞含義在不同場合有不同意思。要真正說學會,整套語言那就要全部熟悉。


分享到:


相關文章: