
32位系统中指针是4个字节,因为其实就是用一个int值(4个字节)来表示某个值的地址的。
打个比方,把变量看成球,指针看成装球的盒子。
盒子可以用号码0、1、2、3……来区分是哪个,但是这个盒子的号码是存放在一张表格里(随便是在纸上、还是Excel里、还是就在脑袋里),这张表格就是存放地址的地址。
比如上述代码,我把char*强制转换成int后,相当于是把调试窗口中0x开头的16进制表示的地址转换成十进制来表示的int。
16进制中c对应12,f对应15,计算之后为
2 * 16^5 + 12 * 16^4 + 15 * 16^3 + 8 * 16^2 + 1 * 16 + 0
= 2097152 + 786432 + 61440 + 2048 + 16 + 5 = 2947093
由于数组各元素内存是连续的,所以可以发现name[1]比name[0]大2,name[2]比name[0]大5