struct和union的区别

struct和union是C++中的构造数据类型。struct允许组合不同类型的數據为一个新的数据类型,如定义的people结构体包含年龄、名字和身高。union则特殊在于它在同一时间只能存储一个成员的数据,如data联合体可以存储int、char数组或double,但会覆盖之前的数据。union的大小由最长的成员决定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struct

struct 是一个构造数据类型
它将不同类型的数据组合成一个整体,也就是说可以自义定数据类型。

例如声明一个结构体 people :

struct structA
{
	int age;
	char name[10];
	double height;
};

在这里定义了一个人的结构体,包含 年龄、名字、身高 三个数据类型。

当一个结构体被创建的时候,结构体变量所占内存长度是各成员占的内存长度的总和。



union

union 是一个特殊的类类型
它在一个时刻只能保有其一个非静态数据成员。也就是说它可以使得几个变量一起占据一段内存空间,可以将一个内存位置用于多种用途。

例如声明一个联合体 data :

union data
{
	int age;
	char name[10];
	double height;
};

在这里定义了一个存放数据的联合体,它可以在一个内存中存储三个数据,但是这三个数据每次只能存放其中一种数据,当新的数据存放的时候,原来的数据就失去了作用。

例如:

#include <iostream>

using namespace std;

union data{
    int age;
	char name[10];
	double height;
}Data;

int main()
{
    Data.age=21;
    cout<<Data.age<<endl;
    
    Data.height=1.65;
    cout<<Data.age<<' '<<Data.height<<endl;
    
    return 0;
}

这是一个 C++ 程序,它使用联合来存储数据。联合是一种特殊的数据类型,允许在同一内存位置存储不同的数据类型。在这个程序中,联合 data 包含三个成员:一个 int 成员 age,一个 char 数组 name 和一个 double 成员 height。程序初始化联合的 age 成员为 21 并输出它。然后它用 1.65 初始化 height 成员并输出 ageheight 成员。但是,由于联合一次只能保存一个值,所以当初始化 height 时,age 的值将被覆盖。

这个程序的输出将是:

21
0 1.65

需要注意的是:当一个联合体被创建的时候,其大小为最长的成员占的内存大小。比如上面的data的内存大小为10个字节。

参考自:【C/C++】结构体和联合体的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值