天天看點

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

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

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

好消息,這個痛點将會在這篇文章得到解決,媽媽再也不用擔心我的學習了!

一說指針,第一反應,指針是一種資料類型。

c語言學習,重點就是兩個,一個是資料的資料類型,一個就是程式的結構。

整個C語言學習體系,在初學階段就接觸基本資料類型,整型實型字元型;然後是三大基本結構順序循環分支,随後的内容幾乎都是對資料類型的擴充結構體 指針 連結清單 數組……

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

那麼資料類型是什麼?

資料類型就表示它能夠存儲什麼類型的資料,整型有什麼用呢?我在什麼情況下需要使用一個int x呢?簡單,你想擷取一個存儲單元,用于存儲一個整型資料;同理,你定義一個實型是為了擷取一個範圍那麼大,精度那麼多的一個實型變量。

那麼指針是一種什麼類型的變量呢?什麼情況下我需要定義一個指針,我要用這個指針存儲什麼樣子的資料?

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

隻要有資料類型,就要想:這種類型怎麼定義,這種資料類型存儲什麼形式的資料。

指針,用于儲存某個單元的位址,你隻要想存儲某個單元的位址,你就需要定義一個指針,接着,你存一個位址的目的是什麼?是要對一個單元進行間接通路。

通路單元的方式就是兩種:直接通路和間接通路。

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

直接通路就是直接使用變量名,系統就會找到這個變量所在的單元,對他進行或讀或寫操作。

隻要你在表達式使用了變量名,系統就會通過名字找到他所在的單元,找到做什麼?或讀或寫,到底是讀還是寫,取決于變量名所在的位置,如果出現在指派号左邊,就是寫入一個值,如果是列印到螢幕上,就是進行讀。

對于間接通路,先要定義一個指針,然後用這個指針指向你想要通路的單元,在指針變量名前面加一個*術語叫做間接運算符,可以把指針指向的内容表示出來。

為什麼要使用間接通路?

使用變量名直接通路單元,它不香嗎?為什麼要引入間接通路,使用間接通路有好處嘛?間接通路不是自己給自己找别扭嗎?

不是!間接通路有非常重要的作用,主要展現在幾個方面:

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

(1)為了在函數中改變主調函數的存儲單元,沒有間接通路你就不可能實作.

(2)使用間接通路為了動态配置設定存儲單元,進而對單元進行操作,并且再此基礎上實作鍊式存儲結構,也就是連結清單.

(3)為了能夠動态配置設定存儲單元,并再此基礎上實作動态數組。之前,定義變量,數組是靜态數組獲得10個存儲空間,而數組一旦配置設定好存儲空間,長度就不能變化。但是動态數組不一樣,當滿了以後可以擴充空間。

(4)通過指針通路一段連續的存儲空間

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

如果使用直接通路,使用變量名就隻能通路我單元本身,而使用間接操作有了指針,p指向一個單元,不僅可以通過*p把目前指針指向的單元間接表示,還可以通過指針的移動把存儲空間前後任意的存儲單元表示出來。

可以說,指針是C語言的靈魂。一個人的C語言基礎好不好,很大一部分都看他對于指針的了解程度有多深。是以希望同學們可以對指針的内容反複研習,反複實踐。

感謝閱讀,學習使人強大。

如果你想更好的提升你的程式設計能力,成為一個強大的C/C++程式員!不妨和一些志同道合的小夥伴一起學習成長!

C語言C++程式設計學習交流圈子,【點選進入】微信公衆号:C語言程式設計學習基地

有一些源碼和資料分享,歡迎轉行也學習程式設計的夥伴,和大家一起交流成長會比自己琢磨更快哦!

C/C++程式設計筆記:「C語言指針」民間解讀版本,最通俗的知識剖析

繼續閱讀