您的位置:首页 > 其它

字符串和整数在内存中的位置

2011-02-18 16:31 363 查看
#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 与 网络字节序一致
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: