在计算机系统中,数据可以以两种方式存储在内存中:大端序(Big Endian)和小端序(Little Endian)。
大端序:在大端序中,数据的高位字节(最高有效字节)存储在低地址,而低位字节(最低有效字节)存储在高地址。例如,十六进制数0x12345678在大端序中存储为0x12 0x34 0x56 0x78。
小端序:在小端序中,数据的高位字节存储在高地址,而低位字节存储在低地址。使用相同的例子,十六进制数0x12345678在小端序中存储为0x78 0x56 0x34 0x12。
union data {
int a;
char b;
};
struct def {
union data mine;
};
struct def endian;
int main(int argc, char **argv)
{
endian.mine.a = 0x12345678;
printf("%02X\n", endian.mine.b);
return 0;
}
/*打印 78 说明是小端, 12 说明是大端 */
union(联合)是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。它类似于结构体(struct),但是不同的是,联合只能同时存储其中一个成员的值。
联合的定义使用关键字union,后面跟着联合的名称和成员变量的列表。每个成员变量可以有不同的数据类型,但它们共享相同的内存空间。