结构与联合有什么区别?——C++结构体和联合体

374 篇文章 ¥29.90 ¥99.00
本文探讨了C++中结构体和联合体的差异。结构体能包含多种数据类型,每个成员拥有独立内存,而联合体则共享同一内存空间,仅能存储一种类型。理解这两者的区别有助于优化数据存储和提高编程效率。

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

结构与联合有什么区别?——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;
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值