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 成员并输出 age 和 height 成员。但是,由于联合一次只能保存一个值,所以当初始化 height 时,age 的值将被覆盖。
这个程序的输出将是:
21
0 1.65
需要注意的是:当一个联合体被创建的时候,其大小为最长的成员占的内存大小。比如上面的data的内存大小为10个字节。
struct和union是C++中的构造数据类型。struct允许组合不同类型的數據为一个新的数据类型,如定义的people结构体包含年龄、名字和身高。union则特殊在于它在同一时间只能存储一个成员的数据,如data联合体可以存储int、char数组或double,但会覆盖之前的数据。union的大小由最长的成员决定。
3822

被折叠的 条评论
为什么被折叠?



