本文共 483 字,大约阅读时间需要 1 分钟。
1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2. 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如果有需要,编译器会在成员之间加上填充字节;
3. 结构体的总大小为结构体中最宽基本类型成员大小的整数倍,如果有需要,编译器会在最末一个成员之后加上填充字节。
ex :
struct st{ uint16_t id; //2字节宽 uint32_t value; //4字节宽 uint64_t time; //8字节宽}
内存空间占用情况: 共占用16字节空间宽度
ex :
struct Date{ char a; //1字节 int b; //4字节 int64_t c; //8字节 char d; //1字节};Data data[2][10];
内存空间占用情况: 共占用16字节空间宽度
如果Data首地址为X,则data[1][5].c的地址是X+368.
参考文献:
【1】程序员面试笔试真题与解析
转载地址:http://zrzt.baihongyu.com/