在C语言中,我们有用于相同类型数据和多个类型数据的容器。对于存储相同类型的数据,C提供了存储相同类型的数据变量的数组的概念,而对于存储不同类型的数据,C具有结构和联合的概念,也可以存储不同类型的数据变量。
由于Structure和Union都可以在其中保存不同类型的数据,但是现在基于内部实现,我们可以在这两个容器中找到一些区别。
以下是“结构”和“联合”之间的重要区别。
序号 | 键 | 结构体 | 联盟 |
---|---|---|---|
1 | 定义 | 结构是用C定义的容器,用于存储不同类型的数据变量,并且还支持用户定义的变量存储。 | 另一方面,Union也是C中类似的容器,它还可以容纳不同类型的变量以及用户定义的变量。 |
2 | 内部实施 | C中的结构是内部实现的,因为每个输入成员都有单独的存储位置 | 在联盟内存仅分配给所有其他输入变量中大小最大的成员的情况下,所有这些变量都共享同一位置。 |
3 | 语法 | 在C中声明一个Structure的语法如下:struct struct_name{ type element1; type element2; . . } variable1, variable2, ...; | 在C中声明Union的其他语法如下:union u_name{ type element1; type element2; . . } variable1, variable2, ...; |
4 | 尺寸 | 如定义中 ,结构没有为其成员共享位置,因此结构的大小等于或大于所有数据成员的大小总和。 | 另一方面,Union对其每个成员没有单独的位置,因此其大小等于或等于所有数据成员中最大成员的大小。 |
5 | 值储存 | 如上 ,在“结构”的情况下,每个输入数据成员都有特定的存储位置,因此它可以存储不同成员的多个值。 | 在使用Union的情况下,所有输入数据成员只有一个共享内存分配,因此它一次为所有成员存储一个值。 |
6 | 初始化 | 在Structure中,可以同时初始化多个成员。 | 另一方面,如果是Union,则只有第一个成员可以一次初始化。 |