结构与联合有什么区别?——C++结构体和联合体
在C++编程中,结构体和联合体是两种非常有用的数据类型。它们的作用都是为了支持更加复杂的数据表示和存储。虽然结构体和联合体有着很多的相似之处,但是它们也有一些很重要的区别。
首先,结构体的定义是可以包含多种数据类型的,比如整型、浮点型、字符型等等,而联合体的定义中只能包含一种数据类型。其次,结构体会把所有的成员变量都分配一段内存空间进行存储,它们的地址都不同,而联合体则是以各自的成员变量在内存中的偏移量不同来共享同一段内存,这样它们的地址就是相同的。
下面我们来看一些具有代表性的代码例子:
// 定义一个结构体类型
struct Person {
char name[20];
int age;
float salary;
};
// 定义一个联合体类型
union Data {
int i;
float f;
char str[20];
};
int main() {
// 使用结构体类型
Person p1;
strcpy(p1.name, "John");
p1.age = 25;
p1.salary = 3000.50;
// 使用联合体类型
Data d1;
d1.i = 10;
d1.f = 3.14;