小端序
- 一般计算机都是小端序,把最低有效位放在低地址的存储方式。
- 无论是栈还是堆,都遵循小端序。
- 可能影响数据类型转换
参见:数据类型 5.1节
#include<stdio.h>
#include<stdlib.h>
void test()
{
int *p;
char *q;
int a =0x41424344;
p = &a;
printf("stack:\n");
printf("%x\n", *p);
q = (char *)p;
printf("%p : %c\n", q+3, *(q+3));
printf("%p : %c\n", q+2, *(q+2));
printf("%p : %c\n", q+1, *(q+1));
printf("%p : %c\n", q, *q);
}
int main()
{
int *p;
char *q;
p = (int *)malloc(16);
*p = 0x41424344;
printf("%x\n", *p);
q = (char *)p;
printf("%p : %c\n", q+3, *(q+3));
printf("%p : %c\n", q+2, *(q+2));
printf("%p : %c\n", q+1, *(q+1));
printf("%p : %c\n", q, *q);
free(p);
p=NULL;
test();
return 0;
}
//输出
41424344
0x602013 : A
0x602012 : B
0x602011 : C
0x602010 : D
stack:
41424344
0x7fffffffe257 : A
0x7fffffffe256 : B
0x7fffffffe255 : C
0x7fffffffe254 : D