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

圖3-6 內存被劃分為許多小的單元房間