相信很多同學在初學C語言時候,都會遇到遇到一個問題:指針,永遠的神!

好消息,這個痛點将會在這篇文章得到解決,媽媽再也不用擔心我的學習了!
一說指針,第一反應,指針是一種資料類型。
c語言學習,重點就是兩個,一個是資料的資料類型,一個就是程式的結構。
整個C語言學習體系,在初學階段就接觸基本資料類型,整型實型字元型;然後是三大基本結構順序循環分支,随後的内容幾乎都是對資料類型的擴充結構體 指針 連結清單 數組……
那麼資料類型是什麼?
資料類型就表示它能夠存儲什麼類型的資料,整型有什麼用呢?我在什麼情況下需要使用一個int x呢?簡單,你想擷取一個存儲單元,用于存儲一個整型資料;同理,你定義一個實型是為了擷取一個範圍那麼大,精度那麼多的一個實型變量。
那麼指針是一種什麼類型的變量呢?什麼情況下我需要定義一個指針,我要用這個指針存儲什麼樣子的資料?
隻要有資料類型,就要想:這種類型怎麼定義,這種資料類型存儲什麼形式的資料。
指針,用于儲存某個單元的位址,你隻要想存儲某個單元的位址,你就需要定義一個指針,接着,你存一個位址的目的是什麼?是要對一個單元進行間接通路。
通路單元的方式就是兩種:直接通路和間接通路。
直接通路就是直接使用變量名,系統就會找到這個變量所在的單元,對他進行或讀或寫操作。
隻要你在表達式使用了變量名,系統就會通過名字找到他所在的單元,找到做什麼?或讀或寫,到底是讀還是寫,取決于變量名所在的位置,如果出現在指派号左邊,就是寫入一個值,如果是列印到螢幕上,就是進行讀。
對于間接通路,先要定義一個指針,然後用這個指針指向你想要通路的單元,在指針變量名前面加一個*術語叫做間接運算符,可以把指針指向的内容表示出來。
為什麼要使用間接通路?
使用變量名直接通路單元,它不香嗎?為什麼要引入間接通路,使用間接通路有好處嘛?間接通路不是自己給自己找别扭嗎?
不是!間接通路有非常重要的作用,主要展現在幾個方面:
(1)為了在函數中改變主調函數的存儲單元,沒有間接通路你就不可能實作.
(2)使用間接通路為了動态配置設定存儲單元,進而對單元進行操作,并且再此基礎上實作鍊式存儲結構,也就是連結清單.
(3)為了能夠動态配置設定存儲單元,并再此基礎上實作動态數組。之前,定義變量,數組是靜态數組獲得10個存儲空間,而數組一旦配置設定好存儲空間,長度就不能變化。但是動态數組不一樣,當滿了以後可以擴充空間。
(4)通過指針通路一段連續的存儲空間
如果使用直接通路,使用變量名就隻能通路我單元本身,而使用間接操作有了指針,p指向一個單元,不僅可以通過*p把目前指針指向的單元間接表示,還可以通過指針的移動把存儲空間前後任意的存儲單元表示出來。
可以說,指針是C語言的靈魂。一個人的C語言基礎好不好,很大一部分都看他對于指針的了解程度有多深。是以希望同學們可以對指針的内容反複研習,反複實踐。
感謝閱讀,學習使人強大。
如果你想更好的提升你的程式設計能力,成為一個強大的C/C++程式員!不妨和一些志同道合的小夥伴一起學習成長!
C語言C++程式設計學習交流圈子,【點選進入】微信公衆号:C語言程式設計學習基地
有一些源碼和資料分享,歡迎轉行也學習程式設計的夥伴,和大家一起交流成長會比自己琢磨更快哦!