#include <stdio.h> int main() { char a[]="abc"; printf("%d/n",sizeof(a)); unsigned char* ptr=(unsigned char*)a; int i; for(i=0;i<4;i++) { printf("%x:%c/n",ptr,*ptr); ptr++; } return 0; }
4
12ff7c:a
12ff7d:b
12ff7e:c
12ff7f:
void main() { __int64 a = 0x1122334455667788; __int64 *pa =&a; unsigned char *c = (unsigned char *)pa; for (int i=0; i!=sizeof(a); ++i) { printf("&a = %lX/nVa = %lX/n", c++, *c); } }
intel X86是little endian(little endian表示最没用的放在低字节,big endian表示最有用的放在低字节)
所以结果是:
&a = 12FF78
Va = 88
&a = 12FF79
Va = 77
&a = 12FF7A
Va = 66
&a = 12FF7B
Va = 55
&a = 12FF7C
Va = 44
&a = 12FF7D
Va = 33
&a = 12FF7E
Va = 23
&a = 12FF7F
Va = 12
此两者刚刚相反 :请注意
big endian 与 网络字节序一致
