ptr1
&a是a[0]的地址:0x22ff24,&a+1不是加了一个int所占的空间,而是加了这个数组所占的空间,也就是0x14,得到&a+1即是0x22ff38
ptr[-1]即*(ptr-1),就是0x22ff38-4处内存所存的值,即a[4]的值
至于为什么&a+1不是加了一个int所占的空间,而是加了这个数组所占的空间(根据&a+2得0x22ff4c得出),我不知道,我刚开始是认为加一个int所占空间
ptr2
(int)a+1将a[0]的地址转换成整数再加1,便是整数的数学运算,而不是地址的数学运算了,所以(int)a+1为0x22ff24+1,即0x22ff25
看一下现在的内存
0x22ff24(地址,下同)
0x01(值,下同)
0x22ff25
0x00
0x22ff26
0x00
0x22ff27
0x00
0x22ff28
0x02
比较明显了(注意字节序)
0x22ff24处存放的int值是0x00000001,0x22ff25处便是0x2000000了