首页 > 试题广场 >

在C++中,已知在32位系统中,一个结构体struct st

[单选题]

在C++中,已知在32位系统中,一个结构体struct stu {short i;struct {char j; int k;};int m;char n;};,那么在考虑字节对齐下,编译后sizeof(stu)的值是多少()

  • 20
  • 12
  • 14
  • 17
结构体的有效对齐值是其最大数据成员的自身对齐值   int k是最大的自身对齐值4,所以结构体的对齐值就是4 
存放成员的起始地址必须是该成员有效对齐值的整数倍。 就是说k前面必须有4的整数倍字节
这里先对齐内部的结构体 j补齐4个字节 k 占4个字节 
外部结构体  i 也要补齐4个字节  m占4个字节   n 呵呵 我原来以为char反正就占1个字节 后面没有int类型了 前面的补齐跟这里没有关系了,其实不是的  对于结构体或者类,要将其补齐为其有效对齐值的整数倍,也就是n也要补齐到4字节
所以总共20字节
发表于 2020-02-19 09:50:36 回复(0)
1.结构体对齐:(1)按结构体中最大的数据结构对齐(简单看作均为4的倍数)。
2.数据结构:int 4字节, char 4字节

发表于 2020-03-21 13:25:30 回复(0)