当前位置:首页 C++ > 正文

c++结构体与联合体有何区别?

作者:野牛程序员:2023-07-15 11:18:10 C++阅读 2841

在C++中,结构(structure)和联合(union)都是用于组织和存储不同类型的数据的方式,但它们之间存在一些重要的区别。

  1. 成员的内存分配方式:

    • 结构(structure)中的成员分配各自独立的内存空间,每个成员都有自己的地址。这意味着结构的大小等于各个成员的大小之和。

    • 联合(union)中的所有成员共享同一块内存空间,只能同时存储其中的一个成员。联合的大小等于其最大成员的大小。

  2. 访问方式:

    • 对结构的成员可以通过成员名直接进行访问。

    • 对联合的成员也可以通过成员名直接进行访问,但只能访问当前存储的成员。

  3. 存储方式:

    • 结构的成员在内存中按照声明的顺序依次存储。

    • 联合的所有成员共享同一块内存,存储方式取决于最后一次存储的成员。

  4. 用途:

    • 结构通常用于组织和存储相关的数据项,可以同时存储和访问多个成员。

    • 联合常用于在相同的内存位置上存储不同类型的数据,用于节省内存空间。

下面是一个简单的示例代码,展示了结构和联合的使用:

#include <iostream>
using namespace std;

// 结构示例
struct Person {
    string name;
    int age;
};

// 联合示例
union Data {
    int intValue;
    float floatValue;
};

int main() {
    // 结构的使用
    Person person;
    person.name = "John";
    person.age = 25;
    cout << "Name: " << person.name << ", Age: " << person.age << endl;

    // 联合的使用
    Data data;
    data.intValue = 10;
    cout << "Int value: " << data.intValue << endl;
    data.floatValue = 3.14;
    cout << "Float value: " << data.floatValue << endl;
    cout << "Int value after assigning float value: " << data.intValue << endl;

    return 0;
}

上述代码中,结构Person用于存储人员的姓名和年龄,而联合Data用于存储一个整数值或浮点数值。注意到在联合的使用中,赋值给一个成员会影响其他成员的值。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击