首页 > 试题广场 >

下列关于联合的描述中,错误的是?

[单选题]
下列关于联合的描述中,错误的是?
  • 联合变量定义时不可初始化
  • 联合的成员是共址的
  • 联合的成员在某一个时刻只有当前的是有效的
  • 联合变量占有的内存空间是该联合变量中占有最大内存空间的成员在内存对齐时所需的存储空间
推荐
union类型的变量在定义时是可以被初始化的,定义如下union类型
union Test
{
    int a;
    float b;
};
Test test = {1};
test变量的定义可以初始化,初始值的类型必须是union中第一个成员的类型。

选A
编辑于 2015-02-02 14:43:21 回复(6)

1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

发表于 2014-10-25 00:26:11 回复(0)
union Test
{
inta;
floatb;
};
Test test = {1};
test变量的定义可以初始化,初始值的类型必须是union中第一个成员的类型。
 “联合”与“结构”有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和(空结构除外,同时不考虑边界调整)。而在“联合”中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值。
发表于 2017-07-12 10:57:44 回复(0)

联合变量是可以被初始化的,但这个初始化值必须是联合第一个成员的类型,而且它必须位于一对花括号里面。

发表于 2015-09-24 10:19:19 回复(0)
联合union可以被初始化,初始化的必须只能是联合体中第一个变量的类型,同时用{}括起来 联合体与结构体不用,成员共享一段内存。大小是联合体内数据类型所占的最大字节数,联合体可以被其中任一成员赋值
发表于 2021-02-20 22:11:58 回复(0)
联合体成员在某一时刻只有当前是有效的...是什么意思啊0.o

发表于 2023-09-01 19:53:43 回复(0)
D不对,要考虑字节对齐
发表于 2022-03-16 19:22:15 回复(0)
联合变量是可以初始化的,但这个初始化值必须是联合第一个成员的类型,且必须位于一对花括号里面。
发表于 2022-02-27 16:01:37 回复(0)
  • 联合变量占有的内存空间是该联合成员占有最大内存空间的成员所需的存储空间  不考虑字节对齐???

发表于 2015-06-07 22:15:58 回复(6)
union类型的变量在定义时是可以被初始化的,但必须是union中第一个成员的类型。
发表于 2023-03-23 20:03:30 回复(0)
。。。。。。创建联合体是声明,创建变量才是初始化,。。。和C++搞混了,老想构造函数。。。。。。
发表于 2022-11-01 09:45:47 回复(0)
<p>答案C不同意,有时候在不同类型之间做转换用union也是比较方便的</p>
发表于 2020-09-22 08:23:31 回复(0)
union类型变量在定义时初始化必须是union中第一个成员的类型
发表于 2018-09-16 15:17:06 回复(0)

联合类型里的变量是可以被初始化的,必须是第一个变量的类型,初始值必须位于花括号里面

发表于 2018-06-27 10:34:06 回复(0)
有木有人理解c选项?
发表于 2016-06-07 08:34:15 回复(1)
结构体中初始值的类型必须是union中第一个成员的类型。
发表于 2016-05-20 15:45:06 回复(0)
mark初始值的类型必须是union中第一个成员的类型。
发表于 2016-05-02 17:31:13 回复(0)