例如:ide
數字1在內存中存儲的方式分爲兩種:
[00 00 00 01] 大端字節序
[01 00 00 00] 小端字節序 spa
1、使用指針判斷:
#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;
}指針
2、使用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;
}內存