考虑下面的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