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

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