在c语言中,有一个关键字union,它定义的变量内存是公用的。
比如
union check
{
int i;
char ch;
} c;
它占的内存字节数就是4字节,按照最大的算。
这里就引出了大端和小端的概念,
大端模式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式:字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。
union型数据所占的空间等于其最大的成员所占的空间,对union型成员的存取都从相对与该联合体基地址的偏移量为0处开始,也就是联合体的访问不论对哪个变量的存取都是从union的首地址位置开始。
我这里试了一个程序:
这里结果如果是1,我的linux系统就是小端的,如果是0,则是大端。
结果如下:
从结果看,我的虚拟机linux是小端的。