C |结构与联盟|问题4

考虑下面的C声明

null

struct {
short s[5];
union {
float y;
long z;
}u;
} t;


假设short、float和long类型的对象分别占用2字节、4字节和8字节。忽略对齐考虑,变量t的内存需求为(门CS 2000)

(A) 22字节 (B) 14字节 (C) 18字节 (D) 10字节 答复: (C) 说明: 短数组s[5]将占用10字节,因为短数组的大小为2字节。

当我们声明一个联合时,为该联合分配的内存等于该联合中最大成员所需的内存,所有成员共享相同的内存空间。由于u是一个并集,分配给u的内存最大为浮点y(4字节)和长z(8字节)。因此,总大小将为18字节(10+8)。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享