在小端序的机器中,如果 union X { int x; char y[4]; }; 如果 X a; a.x=0x11223344;//16进制 则:() y[0]=11 y[1]=11 y[2]=11 y[3]=11 y[0]=22 y[3]=22
union X { int x; char y[4]; };
这里需要考虑存储模式:大端模式和小端模式。
大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。
union 型数据所占的空间等于其最大的成员所占的空间。对union
型的成员的存取都是相对于该联合体基地址的偏移量为0 处开始,也就是联合体的访问不论对哪个变量的存取都是从union 的首地址位置开始。如此一解释,上面的问题是否已经有了答案呢?