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日

相关文章

  • Java递归和迭代区别详细介绍

    Java递归和迭代区别详细介绍 Java递归和迭代都是程序中重要的控制结构。递归和迭代都可以用来解决相同的问题,但是它们在实现和执行上有很大的区别。本文将详细介绍Java递归和迭代的区别和使用。 什么是递归 递归是指在程序执行过程中调用自身来解决问题的方法。在递归中,函数会多次调用自身,并通过改变参数的值来进行不同的求解。 例如,下面的代码使用递归来计算阶乘…

    other 2023年6月27日
    00
  • Angular重构数组字段的解决方法示例

    下面开始讲解“Angular重构数组字段的解决方法示例”的完整攻略。 什么是重构数组? 在Angular中,我们通常使用数组来存储和展示数据。重构数组通常指对数组中的元素进行添加、删除或修改,以达到更新数据的目的。 解决方法示例一:使用JavaScript的splice()方法 JavaScript中的splice()方法可以实现对数组进行修改、添加、删除等…

    other 2023年6月27日
    00
  • Linux文件系统中的inode节点详细介绍

    介绍 在Linux文件系统中,inode是指索引节点(index node),每个文件或目录都有一个对应的inode,用于标识文件或目录的元数据信息。使用inode可以描述Linux文件系统的基本组织和结构,包括了文件的创建时间、访问时间、修改时间、权限等。 inode节点结构 inode是一个由固定大小的记忆体所组成的数组,通常存放在文件系统的数据区。每个…

    other 2023年6月26日
    00
  • 详解mysql中concat函数的用法(连接字符串)

    详解MySQL中Concat函数的用法 什么是Concat函数? 在MySQL中,Concat函数用于连接字符串。它可以连接两个或多个字符串,并返回一个新的字符串。 Concat函数的语法 Concat函数的基本语法如下: CONCAT(string1, string2, … , stringN) 其中string1, string2, …, str…

    其他 2023年3月28日
    00
  • 安卓 获取手机IP地址的实现代码

    获取安卓手机的IP地址可以通过以下步骤实现: 添加网络权限:在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" /> <uses-permission androi…

    other 2023年7月31日
    00
  • Windows10 Build 10240.17449累积更新补丁KB4032695下载地址(附修复解决问题)

    Windows10 Build 10240.17449累积更新补丁KB4032695下载地址(附修复解决问题)攻略 1. 简介 Windows10 Build 10240.17449累积更新补丁KB4032695是为Windows10操作系统提供的一个重要更新补丁。该补丁修复了一些已知的问题,并提供了一些性能改进和安全增强。本攻略将详细介绍如何下载和安装该补…

    other 2023年8月4日
    00
  • 华为交换机怎么重启接口? 华为交换机接口重启命令的用法

    下面是针对华为交换机重启接口的完整攻略: 一、重启单个接口 1.1 确认接口的状态 首先,我们需要查看当前接口的状态,确认其是否需要被重启。可以通过以下命令查看: display interface GigabitEthernet 0/0/1 其中,“GigabitEthernet 0/0/1”代表要查看的接口名称。 1.2 关闭接口 接着,我们需要关闭该接…

    other 2023年6月26日
    00
  • DOS批处理高级教程 第六章 if命令讲解

    DOS批处理高级教程 第六章 if命令讲解 if命令是DOS批处理中常用的条件判断命令,可以通过判断条件的真假来执行不同的操作。 if命令基本语法 if [not] 条件命令(参数) 执行命令 其中if后面的条件命令可以是系统命令,也可以是自定义的变量或者表达式,执行命令则是在条件命令为真时要执行的操作。 if命令参数详解 if命令可以有很多参数,常用的参数…

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