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

结构体

实际应用中,往往需要将不同的信息打包到一起存储在一个单元中。
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
}

相关推荐

  1. C++复合数据类型结构|

    2023-12-22 00:12:03       54 阅读
  2. C# 语言类型(三)—数组/类型/结构

    2023-12-22 00:12:03       36 阅读
  3. C# 语言类型(三)—数组/类型/结构

    2023-12-22 00:12:03       34 阅读
  4. C# 语言类型(三)—数组/类型/结构

    2023-12-22 00:12:03       31 阅读
  5. c#之类型结构

    2023-12-22 00:12:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-22 00:12:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-22 00:12:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-22 00:12:03       87 阅读
  4. Python语言-面向对象

    2023-12-22 00:12:03       96 阅读

热门阅读

  1. Ubuntu20.04安装CUDA和Nvidia 4090显卡驱动

    2023-12-22 00:12:03       73 阅读
  2. ubuntu 更换pip源

    2023-12-22 00:12:03       72 阅读
  3. JUC、MySQL

    2023-12-22 00:12:03       37 阅读
  4. log4js-node在nodejs项目中的使用示例

    2023-12-22 00:12:03       54 阅读
  5. node设置镜像源

    2023-12-22 00:12:03       62 阅读
  6. centos磁盘扩容

    2023-12-22 00:12:03       63 阅读
  7. Codeforces Round 916 (Div. 3)(A~F)

    2023-12-22 00:12:03       67 阅读
  8. Git 中 rebase、reset、revert 有什么区别?

    2023-12-22 00:12:03       56 阅读