首页 > 试题广场 >

struct Student{ int num...

[单选题]
struct Student {
    int num;
    char name[7];   
    short age;
    char sex;
} student1;
int sz = sizeof(student1);
则执行上面语句后,变量sz的值为()
  • 14
  • 15
  • 16
  • 20
int num
4个字节
charname[7]
7个字节
补充1个
字节
shortage
2个字节
charsex
1个字节
补充1个
字节


发表于 2021-01-07 17:50:31 回复(2)
结构体大小: 若没有设定对齐字节数,则按基本类型最大成员为对齐字节数。 若有设定对齐字节数,则对齐字节数为 :min(最大成员,设定的对齐字节数)。
发表于 2022-01-18 14:36:27 回复(1)
num □□□□ name □□□□□□□□ age □□ sex □□ 4+8+2+2=16
发表于 2022-05-15 18:00:17 回复(1)
我的解答:
   为提高执行效率,结构成员有一个数据对齐的概念,目前各编译器默认是8或4字节对齐,即多字节类型成员地址起始是8或4的整数倍。你的编译器为4字节对齐,分析你的结构:
   int num               0—3
  char name[7]       4—10
 short age              11—14
 char  sex              15
结论:student占用0-15,共16字节。
发表于 2020-04-16 16:02:09 回复(3)
不讲前提直接问就是瞎搞。是否要补齐也不说
发表于 2021-12-12 14:52:32 回复(0)
int 4字节为最大的,以内存对齐原则。所以就是16
发表于 2020-12-01 21:02:11 回复(2)
利用“结构体、结构图元素”的首地址、尾地址,来计算结构体内存对齐空间大小。
编辑于 2024-03-31 04:12:56 回复(0)
一般是按照向4字节对齐,2-->4 所以是  4  8  4  4  =20
发表于 2022-09-01 11:11:48 回复(1)
这题有待商榷,直接拿到vs跑跑吧
发表于 2021-02-24 00:14:22 回复(0)