结构体与联合体(C++面试)

定义

结构体是将不同类型的数据组合成一个整体的数据类型。

例如:

struct Student {
    char name[20];
    int age;
    float score;
};


联合体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。

例如:

union Data {
    int i;
    float f;
    char str[20];
};

主要的区别

特性结构体(struct)联合体(union)
内存使用各成员有独立的内存空间各成员共享同一个内存空间
大小所有成员大小之和(考虑对齐)是最大成员的大小
成员访问可同时访问所有的成员同一时间只能有效的访问一个成员
用途组合相关数据节省内存,同一时间只需一种类型数据

内存对齐

struct Example1 {
    char c;    // 1字节
    int i;     // 4字节
};             // 可能占用8字节(考虑对齐)

union Example2 {
    char c;    // 1字节
    int i;     // 4字节
};             // 占用4字节(最大成员大小)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值