考虑以下C声明
struct {
short s[5];
union {
float y;
long z;
}u;
} t;
假设short,float和long类型的对象分别占用2个字节,4个字节和8个字节。忽略对齐注意事项,变量t的内存要求为(GATE CS 2000)
(A) 22个字节
(B) 14个字节
(C) 18个字节
(D) 10个字节答案: (C)
说明:短数组s [5]将占用10个字节,因为short的大小为2个字节。
当我们声明一个联合时,为该联合分配的内存等于该联合的最大成员所需的内存,并且所有成员共享相同的内存空间。由于u是一个并集,分配给u的内存将最大为float y(4个字节)和long z(8个字节)。因此,总大小将为18个字节(10 + 8)。
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。