C/C++編程筆記:「C語言指針」民間解讀版本,最通俗的知識(shí)剖析
相信很多同學(xué)在初學(xué)C語言時(shí)候,都會(huì)遇到遇到一個(gè)問題:指針,永遠(yuǎn)的神!

好消息,這個(gè)痛點(diǎn)將會(huì)在這篇文章得到解決,媽媽再也不用擔(dān)心我的學(xué)習(xí)了!
一說指針,第一反應(yīng),指針是一種數(shù)據(jù)類型。
c語言學(xué)習(xí),重點(diǎn)就是兩個(gè),一個(gè)是數(shù)據(jù)的數(shù)據(jù)類型,一個(gè)就是程序的結(jié)構(gòu)。
整個(gè)C語言學(xué)習(xí)體系,在初學(xué)階段就接觸基本數(shù)據(jù)類型,整型實(shí)型字符型;然后是三大基本結(jié)構(gòu)順序循環(huán)分支,隨后的內(nèi)容幾乎都是對數(shù)據(jù)類型的擴(kuò)充結(jié)構(gòu)體 指針 鏈表 數(shù)組……

那么數(shù)據(jù)類型是什么?
數(shù)據(jù)類型就表示它能夠存儲(chǔ)什么類型的數(shù)據(jù),整型有什么用呢?我在什么情況下需要使用一個(gè)int x呢?簡單,你想獲取一個(gè)存儲(chǔ)單元,用于存儲(chǔ)一個(gè)整型數(shù)據(jù);同理,你定義一個(gè)實(shí)型是為了獲取一個(gè)范圍那么大,精度那么多的一個(gè)實(shí)型變量。
那么指針是一種什么類型的變量呢?什么情況下我需要定義一個(gè)指針,我要用這個(gè)指針存儲(chǔ)什么樣子的數(shù)據(jù)?

只要有數(shù)據(jù)類型,就要想:這種類型怎么定義,這種數(shù)據(jù)類型存儲(chǔ)什么形式的數(shù)據(jù)。
指針,用于保存某個(gè)單元的地址,你只要想存儲(chǔ)某個(gè)單元的地址,你就需要定義一個(gè)指針,接著,你存一個(gè)地址的目的是什么?是要對一個(gè)單元進(jìn)行間接訪問。
訪問單元的方式就是兩種:直接訪問和間接訪問。

直接訪問就是直接使用變量名,系統(tǒng)就會(huì)找到這個(gè)變量所在的單元,對他進(jìn)行或讀或?qū)懖僮鳌?/p>
只要你在表達(dá)式使用了變量名,系統(tǒng)就會(huì)通過名字找到他所在的單元,找到做什么?或讀或?qū)懀降资亲x還是寫,取決于變量名所在的位置,如果出現(xiàn)在賦值號左邊,就是寫入一個(gè)值,如果是打印到屏幕上,就是進(jìn)行讀。
對于間接訪問,先要定義一個(gè)指針,然后用這個(gè)指針指向你想要訪問的單元,在指針變量名前面加一個(gè)*術(shù)語叫做間接運(yùn)算符,可以把指針指向的內(nèi)容表示出來。
為什么要使用間接訪問?
使用變量名直接訪問單元,它不香嗎?為什么要引入間接訪問,使用間接訪問有好處嘛?間接訪問不是自己給自己找別扭嗎?
不是!間接訪問有非常重要的作用,主要體現(xiàn)在幾個(gè)方面:

(1)為了在函數(shù)中改變主調(diào)函數(shù)的存儲(chǔ)單元,沒有間接訪問你就不可能實(shí)現(xiàn).
(2)使用間接訪問為了動(dòng)態(tài)分配存儲(chǔ)單元,從而對單元進(jìn)行操作,并且再此基礎(chǔ)上實(shí)現(xiàn)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),也就是鏈表.
(3)為了能夠動(dòng)態(tài)分配存儲(chǔ)單元,并再此基礎(chǔ)上實(shí)現(xiàn)動(dòng)態(tài)數(shù)組。之前,定義變量,數(shù)組是靜態(tài)數(shù)組獲得10個(gè)存儲(chǔ)空間,而數(shù)組一旦分配好存儲(chǔ)空間,長度就不能變化。但是動(dòng)態(tài)數(shù)組不一樣,當(dāng)滿了以后可以擴(kuò)充空間。
(4)通過指針訪問一段連續(xù)的存儲(chǔ)空間

如果使用直接訪問,使用變量名就只能訪問我單元本身,而使用間接操作有了指針,p指向一個(gè)單元,不僅可以通過*p把當(dāng)前指針指向的單元間接表示,還可以通過指針的移動(dòng)把存儲(chǔ)空間前后任意的存儲(chǔ)單元表示出來。
可以說,指針是C語言的靈魂。一個(gè)人的C語言基礎(chǔ)好不好,很大一部分都看他對于指針的理解程度有多深。所以希望同學(xué)們可以對指針的內(nèi)容反復(fù)研習(xí),反復(fù)實(shí)踐。
感謝閱讀,學(xué)習(xí)使人強(qiáng)大。
如果你想更好的提升你的編程能力,成為一個(gè)強(qiáng)大的C/C++程序員!不妨和一些志同道合的小伙伴一起學(xué)習(xí)成長!

另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對你有幫助的~
