前言
說(shuō)起指針?biāo)闶莻€(gè) 在 CC++ 中老生長(zhǎng)談的話(huà)題,但是今天我從另外一個(gè)角度給各位看官分析一下為什么非要引入指針這個(gè)讓人看到都頭疼的東西? 想必學(xué)過(guò)指針的都被它的各種繁瑣所折磨,另一種角度講就是被他的靈活易用所征服。不知道大家學(xué)習(xí)過(guò)只要是帶指針的地方,都可用使用非指針的東西去表達(dá)出來(lái)(你愿意的話(huà)),甚至比用指針看著還簡(jiǎn)便,所以問(wèn)題也來(lái)了,為什么要引入指針呢?好處何在?
正文
在說(shuō)為什么引入指針這個(gè)問(wèn)題前先帶大家了解一下什么是指針?
指針最為簡(jiǎn)短的定義:指針即為內(nèi)存的地址。 那什么是內(nèi)存呢?舉個(gè)栗子當(dāng)我們計(jì)算 4*(46+4)時(shí),我們?nèi)四X會(huì)想到先有個(gè)中間值 50 然后再計(jì)算成 200,計(jì)算機(jī)也會(huì)這樣有一個(gè) 50 的中間值,我們?nèi)四X在計(jì)算的時(shí)候50 這個(gè)中間值保存在我們的萬(wàn)能的腦子中,計(jì)算機(jī)在出現(xiàn)最終答案前也會(huì)把這個(gè)中間值一個(gè)方便它進(jìn)行下一步計(jì)算的地方,這地方就是內(nèi)存,實(shí)際上我們寫(xiě)程序的時(shí)候定義的所有變量都保存在內(nèi)存中,可以想象一個(gè)大的程序所占用的內(nèi)存是不容小覷的,在計(jì)算機(jī)剛被制造出來(lái)的時(shí)候那些大佬是如何節(jié)省每一個(gè)字符的。至今內(nèi)存的占用是每一個(gè)合格的程序員所需要注意的事情,至此我們得出一個(gè)結(jié)論:寫(xiě)程序需要盡可能少的內(nèi)存。
那么內(nèi)存的地址又是什么呢?這個(gè)說(shuō)來(lái)話(huà)長(zhǎng),不了解的可以到網(wǎng)上和書(shū)上查看一下,每個(gè)地方都會(huì)有很多敘述。假如我們定義了char a=’A’,當(dāng)需要使用這個(gè)‘A’時(shí),除了直接調(diào)用變量a,另一種方式就是調(diào)用a的地址,即指向a的指針p(假設(shè)定義了char *p=&a)。這里請(qǐng)思考一個(gè)問(wèn)題:究竟是a占用的內(nèi)存大呢還是p占用的內(nèi)存大,a顯然只占了一個(gè)字節(jié)(char類(lèi)型),p呢?p 占用了 4 個(gè)字節(jié)。既然p中存儲(chǔ)的是a的地址,也就是說(shuō)這個(gè)問(wèn)題實(shí)際演變?yōu)榱藘?nèi)存的地址需要多少位(bit)來(lái)編碼。再假如我們定義的char a1[30]="C語(yǔ)言程序設(shè)計(jì)能夠讓你成為優(yōu)秀的程序員"占用 30 個(gè)字節(jié),也有一個(gè)char *p1=a1 這個(gè)時(shí)候 a1占用 30 個(gè)字節(jié)而 p1 占用4個(gè)字節(jié)(字符串地址 = 首字符地址)。 那么假如你要引用的是一個(gè) 5G 的東西(這個(gè)應(yīng)該是CPU總線的地址不懂的暫時(shí)叫這個(gè)東西)用指針也還是 4 個(gè)字節(jié)即可。由此我們得出結(jié)論:使用指針型變量在很多時(shí)候占用更小的內(nèi)存空間。
明白了引入指針的好處,我們?cè)賮?lái)看一個(gè)例子,第一節(jié)課是1班語(yǔ)文,2班數(shù)學(xué),第二節(jié)課顛倒過(guò)來(lái),1班要上數(shù)學(xué),2班要上語(yǔ)文,那么第一節(jié)課下課后需要怎樣作調(diào)整呢?方案一:課間1班學(xué)生全都去2班,2班學(xué)生全都來(lái)1班,當(dāng)然,走的時(shí)候要攜帶上書(shū)本、筆紙、零食……場(chǎng)面一片狼藉;方案二:兩位老師課間互換教室。怎樣,有沒(méi)有發(fā)現(xiàn)這個(gè)例子很像一道題目“請(qǐng)交換變量a和變量b的值”,現(xiàn)在,大家知道怎么做是最優(yōu)解了么?
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7630瀏覽量
140675 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71063
原文標(biāo)題:經(jīng)驗(yàn) | 一文了解 C語(yǔ)言 為什么要引入指針?
文章出處:【微信號(hào):xx-cyy,微信公眾號(hào):C語(yǔ)言編程基礎(chǔ)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
C語(yǔ)言指針電子教程
C語(yǔ)言指針函數(shù)和函數(shù)指針詳細(xì)介紹
c語(yǔ)言函數(shù)指針定義,指針函數(shù)和函數(shù)指針的區(qū)別
簡(jiǎn)述C語(yǔ)言中什么是懸空指針和野指針
指針才是C語(yǔ)言的精髓

C語(yǔ)言指針的理解使用

C語(yǔ)言-一維指針定義與使用
C語(yǔ)言中的懸空指針和野指針是什么意思?
詳解C語(yǔ)言指針底層基本原理
C語(yǔ)言的指針用法

評(píng)論