我现在不明白的是```地址是怎么取出并放到指针变量里的```
比如``int a``给a分配2个内存单元```单元1和单元2是连续的``分别有一个地址``
当我们&a后``取的是 单元1 的地址 还是 单元2 的地址``??
然后``int *p``p是用来存放地址的`
静思说
指针本身占的内存即是指针变量的地址
指针在32位机器下所占内存的大小均为4个字节
sizeof(int *)=sizeof(char *)=4
意思就是说``在32位机下``每个 内存单元的地址 都是一个为32位(占4个字节)的数``
因为地址要放在这个32位的内存里``
单元1和单元2的地址都占32个位``
结合上面``&a后``得到的地址就是一个32个位的数``然后把它放到占了32个位的指针变量p里面``
但是取的是哪个单元的地址呢``
主要搞清楚3个问题``
1.
在内存中``每一个内存单元的地址``是一个多少位的数或者说要占多少个位``?
2.
指针变量存放的是地址``那么它存放的是一个内存单元的地址还是多个内存单元的地址``?
3.
都知道char只占一个字节``即一个内存单元``取其地址就取了这个内存单元的地址``
但是其他类型就不只是占一个内存单元了```那么取其地址``又是取的那个单元的地址?