151. 以下程序的运行结果是( )。#include <stdio.h>union Utype{int i;float f;}u[2];void main(){printf("sizeof(u):%d\n",sizeof(u));}A. 2B. 4C. 6D. 8会的大神可以详细解析下吗?
2 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
数组中每个元素的大小都是一样的。整个数组的占用内存的大小就是“单个元素的大小”乘以“数组的元素个数”。
你这里,数组的元素是个union,而union占用内存的大小是其中最大成员占用的大小。这样得到union的大小,因为union就是数组元素,那么再乘以元素个数,就得到整个数组占用的大小。
所以不是“数组里有几个元素就把所占内存最长的那个成员乘以元素数吗”,你这样是把两个知识点混在一起了...
onemoo
TA贡献883条经验 获得超454个赞
D
不同于 struct,union 中的成员共用一块内存。或者说 union 中的成员都从同一个位置开始占用内存,整个 union 占用的内存是其中占用内存最多的一个成员所占用的大小。
这个 union 中 float 成员占用 4 字节,int 成员不会超过它,所以整个 union 应该是占用 4 字节。
而 u 是个有两个元素的数组,所以整个 u 数组占用 8 字节。
sizeof 运算符得到的是整个 u 数组所占用内存的字节数。
- 2 回答
- 0 关注
- 1819 浏览
添加回答
举报
0/150
提交
取消