C++复合数据类型:结构体|枚举

发布时间:2023年12月21日

结构体

实际应用中,往往需要将不同的信息打包到一起存储在一个单元中。
C/C++中提供了一种数据结构–结构体。是由用户自定义的复合数据结构,包含了很多不同类型的数据对象。

#include<iostream>
#include<string>

using namespace std;

/*需要用到struct关键字
    struct 结构体名
    {
        类型1 数据对象1;
        类型2 数据对象2;
    };
*/

//定义一个结构体
struct StudentInfo //习惯首字母大写
{
    /* data */
    string name;
    int age;
    double score;
}stu3, stu4={"cheng", 25, 88.9}; //一般建议结构体定义与对象创建分开,与stu1和stu2作用域不同

//输出一个数据对象的完整信息
void printInfo(StudentInfo stu)
{
    cout <<"学生姓名:" << stu.name << "\t年龄:" << stu.age << "\t成绩:" << stu.score << endl;
}

int main()
{
    //创建数据对象,并作初始化
    StudentInfo stu1 = {"keith", 23, 100.0};
    StudentInfo stu2{"king", 24, 91.2};

    StudentInfo stu5 = stu4;

    //访问结构体中的数据
    cout <<"学生姓名:" << stu1.name << "年龄:" << stu1.age << endl;
    printInfo(stu2);

    //修改
    stu3.name = "liming";
    cout << stu3.age << stu3.name << stu3.score << endl;
}

结构体数组

//结构体数组
StudentInfo s[3] = {
    {"zhao", 22, 67.7},
    {"qian", 34, 56},
    {"sun", 89, 76}
};

cout << s[1].name << endl;

for(StudentInfo stu: s)
{
    printInfo(stu);
}

枚举

实际应用中,经常会遇到某个数据对象只能取有限个常量值的情况,比如一周只有7天,扑克牌四种花色等。C++提供了一种批量创建符号常量的方式,可以替代const。这就是“枚举”enum。

//枚举类型
enum Week //创建的对象的值就是以下几种其中的一个,对应值从0依次增加
{
    Mon, Tue, Wed, Thu = 10, Fri, Sat, Sun //如果定义了Thu = 10, 则在此之前的将从0依次增加,之后的在10的基础上依次增加
};
int main()
{
	Week wk = Fri;
	//Week wk = 3; //错误
	Week wk2 = Week(3); //相当于一个强制类型转换
    cout << "wk: " << wk << endl; //4
    cout << "wk2" << wk2 << endl; //3
}

文章来源:https://blog.csdn.net/weixin_46483785/article/details/135129981
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。