C++结构体用法实例分析

C++结构体用法实例分析

本文将详细介绍C++结构体的用法,并提供两个实例说明。

结构体

结构体是C++中一种用户自定义的数据类型,可以包含多个不同类型的数据成员。其定义方式如下:

struct <结构体名称> {
    <数据类型> <数据成员1>;
    <数据类型> <数据成员2>;
    ...
    <数据类型> <数据成员n>;
};

结构体的定义

例如,我们想要定义一个表示学生信息的结构体,包括学生的姓名、年龄和性别:

struct Student {
    string name;
    int age;
    char sex;
};

结构体的初始化

结构体可以使用两种方式进行初始化:

1. 直接初始化

使用直接初始化可以在定义时完成结构体成员的初始化,如下所示:

Student stu = {"Tom", 18, 'M'};

2. 聚合初始化

聚合初始化是C++11新增的功能,可以让我们使用更简洁的方式完成结构体成员的初始化,如下所示:

Student stu{"Tom", 18, 'M'};

结构体的访问

使用点操作符可以访问结构体的成员数据,如下所示:

cout << "Name: " << stu.name << endl;
cout << "Age: " << stu.age << endl;
cout << "Sex: " << stu.sex << endl;

示例1

我们现在有多个学生的成绩信息,每个学生包含学号、姓名、语文、数学和英语三科成绩。我们可以定义一个结构体来表示学生成绩,并使用数组来保存多个学生的成绩信息。

struct Score {
    string id;
    string name;
    float chinese;
    float math;
    float english;
};

int main() {
    Score scores[3] = {
        {"001", "Tom", 90, 94, 88},
        {"002", "Jerry", 88, 80, 92},
        {"003", "Mike", 86, 89, 91}
    };
    for (int i = 0; i < 3; i++) {
        cout << "ID: " << scores[i].id << endl;
        cout << "Name: " << scores[i].name << endl;
        cout << "Chinese: " << scores[i].chinese << endl;
        cout << "Math: " << scores[i].math << endl;
        cout << "English: " << scores[i].english << endl;
    }
    return 0;
}

示例2

现在我们想要实现一个能够记录车辆信息的程序,包括品牌、型号、颜色和价格。我们可以定义一个结构体来表示车辆信息,并使用vector来保存多个车辆的信息。

struct Car {
    string brand;
    string model;
    string color;
    float price;
};

int main() {
    vector<Car> cars;
    cars.push_back({"Porsche", "Cayenne", "White", 450000.0});
    cars.push_back({"Tesla", "Model S", "Red", 550000.0});
    cars.push_back({"Mercedes-Benz", "S-Class", "Black", 540000.0});
    for (auto car : cars) {
        cout << "Brand: " << car.brand << endl;
        cout << "Model: " << car.model << endl;
        cout << "Color: " << car.color << endl;
        cout << "Price: " << car.price << endl;
    }
    return 0;
}

以上是两个使用结构体的实例说明,希望可以帮助大家更好的理解结构体的用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++结构体用法实例分析 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • JMM核心概念之Happens-before原则

    JMM(Java内存模型)是Java程序员必须理解的一个关键概念之一。在JMM中,Happens-before原则是一个核心概念之一。在本文中,我们将会全面介绍Happens-before原则,并且通过两条示例来说明这个原则。 Happens-before原则的概念 Happens-before原则是一个Java编程中关键的概念,它确定了在Java程序中在一…

    other 2023年6月26日
    00
  • Java this、final等关键字总结

    Java this、final等关键字总结 在Java中,this、final等关键字都是非常重要的,本文将对这些关键字进行详细的讲解。 this关键字 this关键字是一个指向当前对象的引用。在Java中,可以使用this关键字来引用当前对象的方法和属性。 使用this引用属性 在Java中,可以使用this关键字来引用当前对象的属性。例如: public…

    other 2023年6月26日
    00
  • vue动态路由实现多级嵌套面包屑的思路与方法

    Vue动态路由实现多级嵌套面包屑的思路与方法 在Vue中,我们可以通过动态路由来实现多级嵌套面包屑导航。下面是一个完整的攻略,包含了思路和方法,并提供了两个示例说明。 思路 实现多级嵌套面包屑导航的思路如下: 在路由配置中定义每个路由的meta字段,用于存储面包屑导航的信息。 在组件中使用$route对象获取当前路由信息,并根据meta字段生成面包屑导航数据…

    other 2023年7月27日
    00
  • 易语言数据库的“取库文件名”命令详解

    易语言数据库的“取库文件名”命令详解 在使用易语言的数据库操作时,需要使用到“取库文件名”命令来获取数据库文件的文件名,以便对其进行操作。下面详细讲解这个命令的使用方法和注意事项。 命令语法 取库文件名(库名称, 类型) 其中,库名称为字符串类型,表示要操作的数据库文件名;类型为整数类型,取值范围为0到2,表示返回的文件名类型,具体取值及含义如下: 0:返回…

    other 2023年6月26日
    00
  • 跨端开发框架avm组件封装经验分享

    跨端开发框架avm组件封装经验分享 背景 随着多端开发的流行,越来越多的开发者开始尝试使用跨端开发框架进行开发。而在跨端开发中,组件的封装是非常重要的一部分,良好的组件封装能够方便复用和维护,提高开发效率,因此本文将分享进行跨端开发框架avm组件封装的经验。 步骤 1. 准备工作 首先,需要安装跨端开发框架avm,执行以下命令: npm install @a…

    other 2023年6月25日
    00
  • winform下的tabcontrol控件

    Winform下的TabControl控件 Winform是一种基于Windows操作系统的应用程序开发框架,TabControl是Winform中常用的控件之一。TabControl控件可以将窗体分成多个分页,每个分页可以展示不同的内容和功能,非常适合某些复杂的界面设计。 1. TabControl的创建和基本属性设置 TabControl控件在Visua…

    其他 2023年3月29日
    00
  • 你需要知道的10个最佳javascript开发实践小结

    你需要知道的10个最佳JavaScript开发实践小结 在JavaScript开发中,遵循最佳实践可以提高代码的可读性、可维护性和性能。以下是10个最佳JavaScript开发实践的详细攻略: 1. 使用严格模式 在JavaScript文件或函数的开头使用严格模式,可以帮助你避免一些常见的错误,并使代码更加规范。严格模式可以通过在文件或函数的开头添加\”us…

    other 2023年7月27日
    00
  • MySQL索引与事务定义到使用详解

    MySQL索引 索引是帮助我们快速查询数据的一种数据结构,它可以有效地提高数据查询的性能。MySQL支持多种类型的索引,如B-Tree索引、哈希索引等。其中B-Tree索引是最常用的一种,其可以支持模糊匹配、范围查找等查询操作。 在数据库中创建索引可以使用如下语句: CREATE INDEX idx_name ON table_name(column_nam…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部