如图:
把a这个int数存放到point指向的空间。如果是小端字节序存储模式,那么低地址存放低位数据。内存高位存放高位数据。
如果是大端字节序。低地址存放高位数据。内存高位存放低位数据。
我们只需从point指针向后访问一个字节得到的这个数如果是十六进制的44,那么就是小端。否则就是大端。
代码演示:
int check_sys()
{
int i = 0x11223344;
if (0x44 == *(char*)&i)
{
return 0;
}
return 1;
}
int main()
{
int res = check_sys();
if (res == 0)
printf("小端");
else
printf("大端");
return 0;
}
还可以利用联合体的内存共用特性实现。
int check_sys()
{
union Un
{
int i;
char c;
} u1;
u1.c = 1;
return u1.c; //返回1为小端。否则为大端。
}