例如:

数字1在内存中存储的方式分为两种:
[00 00 00 01] 大端字节序
[01 00 00 00] 小端字节序


一、使用指针判断:
#include<stdio.h>
int check_sys()
{
 int n = 1;
 if (1 == *(char *)&n)
 {
  return 1;
 }
 else
 {
  return 0;
 }
}
int main()
{
 int a[4] = { 1, 2, 3, 4 };
 int *ptr1 = (int *)(&a + 1);
 int *ptr2 = (int *)((int)a + 1);
 printf("%x,%x ", ptr1[-1], *ptr2);
 int ret = check_sys();
 if (ret == 1)
 {
  printf("little\n");
 }
 else
 {
  printf("big\n");
 }
 system("pause");
 return 0;
}


二、使用union(联合)判断
联合这个关键字,定义类型的特点是:
通过类型创建的变量,所有的变量共用一块空间,所有的变量起始的地址都是相同的。如果用UN创建un,在内存开辟空间的时候为un开辟了一块空间,该空间的大小必须是所有成员中最大的成员所占的空间。在联合的成员中,同一段时间只能使用一个成员,以免发生冲突。
#include<stdio.h>
int check_sys()
{
 union UN
 {
  char c;//1
  int i;//4
 }un;
 un.i = 1;
 if (un.c == 1)
 {
  return 1;
 }
 else
 {
  return 0;
 }
}
int main()
{
 int a[4] = { 1, 2, 3, 4 };
 int *ptr1 = (int *)(&a + 1);
 int *ptr2 = (int *)((int)a + 1);
 printf("%x,%x ", ptr1[-1], *ptr2);
 int ret = check_sys();
  if (ret == 1)
  {
   printf("little\n");
  }
  else
  {
   printf("big\n");
  }
 system("pause");
 return 0;
}