C语言里面的联合体和结构体有什么区别,分别是什么含义?感觉都是一样的,都是类的不同特性

 我来答
1062665477
推荐于2017-05-22 · TA获得超过553个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:227万
展开全部
联合体与结构体是很容易混淆的概念。粗略一看,两者无论声明、定义还是定义对象的方式都很相似。然而这两个东西的概念和作用实际千差万别。
首先,联合体的各个成员共用内存,并应该同时只能有一个成员得到这块内存的使用权(即对内存的读写),而结构体各个成员各自拥有内存,各自使用互不干涉。所以,某种意义上来说,联合体比结构体节约内存。
举个例子:
typedef struct
{
int i;
int j;
}A;
typedef union
{
int i;
double j;
}U;
sizeof(A)的值是8,sizeof(U)的值也是8(不是12)。
为什么sizeof(U)不是12呢?因为union中各成员共用内存,i和j的内存是同一块。而且整体内存大小以最大内存的成员的划分。即U的内存大小是double的大小,为8了。sizeof(A)大小为8,因为struct中i和j各自得到了一块内存,每人4个字节,加起来就是8了。
了解了联合体共用内存的概念,也就是明白了为何每次只能对其一个成员赋值了,因为如果对另一个赋值,会覆盖了上一个成员的值。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
johnwanz
2013-01-30 · TA获得超过781个赞
知道小有建树答主
回答量:716
采纳率:80%
帮助的人:221万
展开全部
完全不一样。

例如:书包;可以放置书本、笔盒、记事本等物。
联合体,仅能放入一样东西的包(限制),其尺寸,是可放物品中,最大一件的体积。
结构体,是能放入所有物品的包,所以其尺寸,可同时容纳多样物品。

联合体,同时间只能有一个成员在内。或是说,可以用不同型态,去看同一组数据。
结构体,可以包含多个成员在一起,成员都能个别操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友544cc2310
2013-02-02 · TA获得超过119个赞
知道答主
回答量:94
采纳率:0%
帮助的人:56.3万
展开全部
结构和联合有下列区别结构和联合有下列区别结构和联合有下列区别结构和联合有下列区别:
1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员, 而结构的所有成员都存在。
2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
下面举一个例了来加对深联合的理解。
main()
{
union{ /*定义一个联合*/
int i;

struct{ /*在联合中定义一个结构*/
char first;
char second;
}half;

}number;
number.i=0x4241; /*联合成员赋值*/
printf("%c%c\n", number.half.first, mumber.half.second);
number.half.first='a'; /*联合中结构成员赋值*/
number.half.second='b';
printf("%x\n", number.i);
getch();
}
输出结果为: AB 6261

从上例结果可以看出: 当给i赋值后, 其低八位也就是first和second的值;

当给first和second赋字符后, 这两个字符的ASCII码也将作为i 的低八位和高八位。

其他更具体的可以看百度百科
http://wenku.baidu.com/view/ecadc9f5ba0d4a7302763a41.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式