更多來自:http://imcc.blogbus.com
3.9.1 指針的本質(zhì):表示內(nèi)存地址的數(shù)據(jù)類型
在典型的32位平臺上,可以把內(nèi)存空間看成是由很多個連續(xù)的小房間構(gòu)成的,每個房間就是一個小存儲單元,大小是1個字節(jié),房間中住著數(shù)據(jù)。有的數(shù)據(jù)比較小,比如一個char類型的字符,它只需要一個房間就夠了。而有的數(shù)據(jù)比較大,就需要占用好幾個房間,比如一個int類型的整數(shù),其大小是4個字節(jié),需要4個房間才可以安置。為了方便找到住在這些房間中的數(shù)據(jù),房間就需要按照一定的規(guī)則編號,這個編號,就是通常所說的內(nèi)存地址。這些編號是用一個32位的二進(jìn)制數(shù)來編碼的,比如0x7AE4074B、0xFFFFFFFF等,如圖3-6所示。一旦知道某個數(shù)據(jù)的房間編號,就可以通過這個編號來對相應(yīng)房間中的數(shù)據(jù)進(jìn)行存取操作。C++中為了靈活地操作內(nèi)存,特別內(nèi)建了一種特殊的數(shù)據(jù)類型,以用來存放內(nèi)存單元的地址,這就是指針。而存放在指針中的內(nèi)存地址,則可能是一個對象的地址、一個整數(shù)的地址,甚至是一個函數(shù)的地址。一般來說,如果指針變量所保存的是一個對象或者函數(shù)的地址,就說這個指針指向這個對象或者函數(shù)。

圖3-6 內(nèi)存被劃分為許多小的單元房間