1个回答
展开全部
一、第10题选B.
共用体/union各个成员是从同一地址开始存放的。共用体大小计算一般是实际占用空间最大的成员的长度(这里就是int b[3]的大小最大3*4=12)。若该成员的长度不是其他成员类型长度的整数倍(如果是数组就是数组类型的长度)则拓展到满足成员大小的整数倍。这里其他两个数组是char和long大小是1和4,刚好12是他们的整数倍,不用拓展。
二、第7题选D.
结构体第一个成员地址和结构体首地址相同,每个成员地址相对于结构体首地址的偏移量是该成员大小的整数倍,如果不是就在成员间加填充字节;构体总的大小必须是其成员中最大的整数倍,如果不是就在末尾添加填充字节。
根据上面的计算union大小的的方法,计算得union uu大小是8。所以第一个int r1大小是4,偏移量为4;第二个double r2大小为8,偏移量为0;第三个float r3大小为4,偏移量为4,union uu大小为8,所以总的大小为(4+4)+8+(4+4)+8=32。
采纳一下吧。
共用体/union各个成员是从同一地址开始存放的。共用体大小计算一般是实际占用空间最大的成员的长度(这里就是int b[3]的大小最大3*4=12)。若该成员的长度不是其他成员类型长度的整数倍(如果是数组就是数组类型的长度)则拓展到满足成员大小的整数倍。这里其他两个数组是char和long大小是1和4,刚好12是他们的整数倍,不用拓展。
二、第7题选D.
结构体第一个成员地址和结构体首地址相同,每个成员地址相对于结构体首地址的偏移量是该成员大小的整数倍,如果不是就在成员间加填充字节;构体总的大小必须是其成员中最大的整数倍,如果不是就在末尾添加填充字节。
根据上面的计算union大小的的方法,计算得union uu大小是8。所以第一个int r1大小是4,偏移量为4;第二个double r2大小为8,偏移量为0;第三个float r3大小为4,偏移量为4,union uu大小为8,所以总的大小为(4+4)+8+(4+4)+8=32。
采纳一下吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询