数据在栈里是先进后出
指针
#include <stdio.h>
int main()
{
int a = 0x12345678;
char *p = (char *)&a;//强制转换取到a最低字节的地址
if (*p == 0x78) {
//a 12 34 56 78(Hex)
//*p 78
printf("little endian\n");
}
else if (*p == 0x12) {
//a 78 56 34 12(Hex)
//*p 12
printf("big endian\n");
}
return 0;
}
对于16进制,两个字节对应一个byte
联合体
联合体的特点:所以成员从同一地址开始存储
#include <stdio.h>
union test_union//用于测试的共用体
{
int a;//元素a,占4个字节
char b;//元素b,占1个字节,b在内存中的地址为a最低字节的地址
} test;
int main()
{
test.a = 0x12345678;
if (test.b == 0x78) {
//test.a 12 34 56 78(Hex)
//test.b 78
//b在内存中的地址为a最低字节的地址
printf("little endian\n");
}
else if (test.b == 0x12) {
//test.a 78 56 34 12(Hex)
//test.b 12
//b在内存中的地址为a最低字节的地址
printf("big endian\n");
}
return 0;
}