刚才看到这个问题, 这里记录一下。
int arr[5]={1,2,3,4,5};
cout<<hex<<*((int*)((int)arr+1));
在32位编译器中,一个int占4个字节,并且是低位在前,高位在后的方式存储的,比如1,是按照下面的方式存储的:
第1字节 第2字节 第3字节 第4字节
00000001 00000000 00000000 00000000
验证方法借用一段网上的:
#include <stdio.h>
int main(){
int i = 1;
unsigned char * p = (unsigned char *)(&i);
printf("第1字节:%d,第2字节:%d,第3字节:%d,第4字节:%d\n",*p,*(p+1),*(p+2),*(p+3));
}
那么arr[5]这个数组的前两个元素存储就可以像下面这样表示:
0000 0001 | 0x61fe84 |
0000 0000 |