謝謝邀請,
從事C語言開發已經超過10個年頭,越來越覺得指針的方便之處,但在初學者來看指針就是拿下這門編程最大的攔路虎,畢竟很多人開始學習C語言都是激情四射結果遇上了指針貓變成了老鼠變得畏首畏尾。對于指針的不理解主要還是意識上缺乏計算機思維,思維的鍛煉不是靠一兩天的勤奮能夠到位的,需要長時間的堅持。
要理解指針還是需要掌握一些基礎,計算機組成原理,了解計算機內部結構以及內存管理,明白進制之間如何轉化,然后再去看如何使用指針,指針本質就是一個變量的地址,指針使用起來有很多規則,而且一般人都經常容易忘記,有個編程高手同事,編程的基本功特別扎實,問他怎么練成的他說剛入行的時候遇到一個特別負責的技術主管,主要下屬犯一些技術錯誤直接在辦公室通報批評,每次操作字符串或者指針出現問題就通報,在指針的初始化方面特別容易出問題,所以現在這種錯誤幾乎不會再出,這也是普通初學者經常出的一些問題,指針還沒初始化拿去用直接就導致系統崩潰了,來回折騰幾次就開始怕了指針了,所以很多人開始學習指針不見得就是怕指針,就是弄了幾次錯誤之后就覺得這玩意不好惹。
可能覺得指針的初始化很簡單的事情,但在實際操作過程中幾乎每個人都會遇到,特別是結構體指針如果結構體里面再有指針,數組,結構體等等復雜的數據結構,這樣在函數操作過程中什么時候什么時候釋放指針,如何進行指針之間賦值等等操作就能看到功底了,所以初學者開始做項目經常寫出導致系統崩潰或者內存泄漏的代碼,這些經驗都需要慢慢來總結,當然最重要的時候不能被嚇到堅持下去。
學習指針推薦一本林銳博士寫的《高質量C/C++編程》對于指針的常見的漏洞有一些非常透徹的講述,想快速掌握指針的使用技巧還是要以實際項目為基礎,記得曾經做一個機頂盒項目遇到一個問題在耐久測試過程中,只要是運行超過48小時很快就死機,從經驗上判斷是內存泄漏但要找到那個內存申請導致,最后用了鉤子函數不停的折騰,找到了動態申請內存的一行代碼,不停的在申請但一直沒有釋放,做了釋放的動作了,但指針的釋放方向不同,因為這個事情項目晚了三天發布,由于經歷過這些過程所以在寫代碼的時候就會讓自己小心。
如何熟練掌握指針?
1.首先要正確認識指針,不能因為指針給自己帶給來過麻煩就不敢去使用了,去年寫了一個項目,由于下邊的技術人員大部分都是剛入行的,所以在設計框架的時候刻意減少了指針的使用,大部分使用的數組來代替,在項目結束的時候,專門布置了個任務,把里面的數組全部換成指針來操作,結果大家苦不堪言,真正的意識到指針不是那么好玩,但大家都堅持下去,經過一段時間大家基本上都掌握的差不多了,所以從心里上就要做到越挫越勇。
2.多注意總結平時遇到的一些錯誤,特別是指針使用的場景,不同的場景表現形式不一樣,要把內存管理機制搞清楚,只有弄清本質才能更好的掌握,特別是多級指針的使用過程中如何保證腦子不亂,就要多去總結,歸納的時候要懂得變通,用代碼去實現。
3.最快的方式還是要多做項目,項目是檢驗能力的唯一試金石,做的次數多了,積累的經驗也就多了,當然在實踐過程中還要回過頭來看看基礎。
要有堅持到底的勇氣,更要有堅實的基礎。
希望能幫到你。