2^10 = 1K
2^20 = 1M
2^30 = 1G
2^32 = 4G
别忘了,上述单位都是Byte字节,内存是以字节为单位编址的。可以将32位机器的内存(应该是虚拟内存)想象成一个数组,含有2^32个元素。
内存地址就是这个数组的编号,从1(0x00000001)到 2^32(0xFFFFFFFF)
| ———— | 0xFFFFFFFF
| ———— |
| ———— |
| ———— |
| ———— |
| ~~~~~ |
| . . . . . . . .|
|00000000|
| ———— |
| ———— |
| ———— |
| ———— |
| ———— |
| ———— |
| ———— |
| ———— | ___
| ———— | 0X00000004 +
| ———— | 0x00000003 int
| ———— | 0x00000002 +
| ———— | 0x00000001 ---- char
一个指针占四个字节,这四个字节组成的32位数即该指针指向的地址。指针只能指向上面数组中的一项,如果指向的是char型,那么其值就是该地址对应的那个字节,如果指向的是int型,那么其值要从该指针对应的那个字节再向上数3个,总共四个字节组成这个int的值。