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

    技术2026-05-09  3

    #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 与 网络字节序一致

     

    最新回复(0)