C語言 為什么要引入指針?


https://blog.csdn.net/chengxuyuan997/article/details/81231679

 

正文

在說為什么引入指針這個問題前先帶大家了解一下什么是指針?

 

 

 

指針最為簡短的定義:指針即為內存的地址。  那什么是內存呢?舉個栗子當我們計算 4*(46+4)時,我們人腦會想到先有個中間值 50 然后再計算成 200,計算機也會這樣有一個 50 的中間值,我們人腦在計算的時候50 這個中間值保存在我們的萬能的腦子中,計算機在出現最終答案前也會把這個中間值一個方便它進行下一步計算的地方,這地方就是內存,實際上我們寫程序的時候定義的所有變量都保存在內存中,可以想象一個大的程序所占用的內存是不容小覷的,在計算機剛被制造出來的時候那些大佬是如何節省每一個字符的。至今內存的占用是每一個合格的程序員所需要注意的事情,至此我們得出一個結論:寫程序需要盡可能少的內存。

 

 

 

那么內存的地址又是什么呢?這個說來話長,不了解的可以到網上和書上查看一下,每個地方都會有很多敘述。假如我們定義了char a=’A’,當需要使用這個‘A’時,除了直接調用變量a,另一種方式就是調用a的地址,即指向a的指針p(假設定義了char *p=&a)。這里請思考一個問題:究竟是a占用的內存大呢還是p占用的內存大,a顯然只占了一個字節(char類型),p呢?p 占用了 4 個字節。既然p中存儲的是a的地址,也就是說這個問題實際演變為了內存的地址需要多少位(bit)來編碼。再假如我們定義的 char a1[30]="C語言程序設計能夠讓你成為優秀的程序員"占用 30 個字節,也有一個 char *p1= a1 這個時候 a1占用 30 個字節而 p1 占用4個字節(字符串地址 = 首字符地址)。 那么假如你要引用的是一個 5G 的東西(這個應該是CPU總線的地址不懂的暫時叫這個東西)用指針也還是 4 個字節即可。由此我們得出結論:使用指針型變量在很多時候占用更小的內存空間。

 

 

 

明白了引入指針的好處,我們再來看一個例子,第一節課是1班語文,2班數學,第二節課顛倒過來,1班要上數學,2班要上語文,那么第一節課下課后需要怎樣作調整呢?方案一:課間1班學生全都去2班,2班學生全都來1班,當然,走的時候要攜帶上書本、筆紙、零食……場面一片狼藉;方案二:兩位老師課間互換教室。怎樣,有沒有發現這個例子很像一道題目“請交換變量a和變量b的值”,現在,大家知道怎么做是最優解了么?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM