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个字节。