这部分对我本人来说经常搞错,这次再复习又有新的体会,在此仅作记录。
int a=10;
int* p=&a;
*p=20;
以上三段代码,第一句可以理解,在内存开辟一段内存,内存名字为a,其地址假设为(0x123445678)第二句,把变量a的地址放到指针变量p中,指针变量类型为int*,第三句,获取指针变量中的地址对应的值并赋值为20(int a=20)
下图中对不同指针类型做了计算,并给出结果。不管是char * 、int *、double*,其结果都是4个字节,计算机为32为系统。指针变量所存地址均为32bit。
地址为什么为32bit呢?
32位,电脑有32跟电线,高电平为1,低电平0,则其所有组合为2*32,每一个编码为一个内存地址,即地址为下面所列。
00000000 00000000 00000000 00000000
...
11111111 11111111 11111111 11111111