c/c++(疑4) 指针数组和数组指针之间关系

ptr1:将&a+1的值强制转换成int*类型,,赋值给int*类型的变量ptr,ptr1肯定指到数组a的下一个int类型数据了。ptr1[-1]被解析成*(ptr1-1),即ptr1往后退4个byte。所以其值为0x4。ptr2:按照上面的讲解,(int)a+1的值是元素a[0]的第二个字节的地址。然后把这个地址强制转换成int*类型的值赋给ptr2,也就是说*ptr2的值应该为元素a[0]的第二个字节开始的连续4个byte的内容。其内存布局如下图:

好,问题就来了,这连续4个byte里到底存了什么东西呢?也就是说元素a[0],a[1]里面的值到底怎么存储的。这就涉及到系统的大小端模式了,如果懂汇编的话,这根本就不是问题。既然不知道当前系统是什么模式,那就得想办法测试。大小端模式与测试的方法在第一章讲解union关键字时已经详细讨论过了,请翻到彼处参看,这里就不再详述。我们可以用下面这个函数来测试当前系统的模式。

他们的快乐像贪玩的小孩,游荡到天光却还不肯回来。

c/c++(疑4) 指针数组和数组指针之间关系

相关文章:

你感兴趣的文章:

标签云: