unit和struct

2020-04-02  本文已影响0人  一川烟草i蓑衣

struct student

{

     char mark; //1 bytes

     long num;  //8 bytes

     float score; //4 bytes

};

在Mac上运行sizeof(student)为24,因为有字节对齐

union test

{

     char mark;

     float num;

     long score;

};

在Mac上运行sizeof(test)为8,因为共用体将一个char类型的mark、一个long类型的num变量和一个float类型的score变量存放在同一个地址开始的内存单元中,而char类型和long类型所占的内存字节数是不一样的,但是在union中都是从同一个地址存放的,也就是使用的覆盖技术,这三个变量互相覆盖,而这种使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。

因union中的所有成员起始地址都是一样的,所以&a.mark、&a.num和&a.score的值都是一样的

上一篇 下一篇

猜你喜欢

热点阅读