程序设计B笔记——结构体和枚举

本文详细介绍了C++中的结构体和枚举。结构体用于存储不同类型数据的集合,允许对结构体变量整体和成员进行操作。枚举提供了命名的整数常量,提高代码可读性。文章还探讨了结构体的扩展,如运算符重载,以及枚举类型的使用和定义方式。
摘要由CSDN通过智能技术生成


C++的数据类型
C++的数据类型

结构体

在存储和处理大批量数据时,一般会使用数组来实现,但是每一个数据的类型及含义必须一样。如果需要把不同类型、不同含义的数据当作一个整体来处理,如 1000 个学生的姓名、性别、年龄、体重、成绩等,怎么处理呢?

C++ 提供了结构体(struct)来解决这类问题。

1. 结构体的定义

C++ 中的结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。

使用结构体,必须要先声明一个结构体类型,再定义和使用结构体变量。结构体类型的声明格式如下:

struct 类型名
{
    数据类型1   成员名1;
    数据类型2   成员名2;   
    …
};

定义结构体变量

定义结构体变量格式如下:

struct 结构体类型名 变量名列表;

也可以把结构体类型声明和变量定义合在一起,格式如下:

struct 类型名
{
    数据类型1   成员名1;
    数据类型2   成员名2;
    …
} 变量名;

2. 结构体的使用

结构体变量具有以下特点:

  • 可以对结构体变量的整体进行操作。
    例如:swap(a[i],a[j])

  • 可以对结构体变量的成员进行操作。
    引用结构体变量中成员的格式为:

    结构体变量名. 成员名
    

(3)结构体变量的初始化方法与数组类似。

学生信息代码示例:

#include<bits/stdc++.h>  //万能头文件!!!
using namespace std;
struct student{
     string name;
     char sex;
     int age;
     double weight;
};
int main(){
     student stu;
     //逐项输入!!!
     cin >> stu.name >> stu.sex >> stu.age >> stu.weight;  
     cout << stu.name <<  “ “ << stu.sex <<  “ “ << stu.age <<  “ “ ;
     cout << fixed << setprecision(1) << stu.weight << endl;
     return 0;
}

结构体的扩展

  1. 运算符重载
    “运算符重载”常用于解决结构体或自定义数据类型的加法、减法等特殊含义的运算。运算符重载的一般格式为:
类型名 operator 运算符 (const 类型名 变量)const
{
     …
}

3. 成员函数

在 C++ 中,允许在结构中定义函数,该函数称为“成员函数”。描述形式如下:

struct 结构名 
{
          数据成员
          成员函数
};

枚举

枚举类型定义了一组命名的整数常量,以提高代码的可读性

enum TrafficLight { red, green, yellow };
  • TrafficLight枚举类型定义了3个常量:0,1,2 分别和名字red,green以及yellow关联。
  • TrafficLight是一个枚举类型,可以用来定义枚举变量,变量的值只能是枚举成员。
TrafficLight stop = red;

可以指定枚举成员的值

  • 编译器会给未指定值的枚举成员赋予相邻值的下一整数值
enum ShapeType
{circle=10, square=20, rectangle};
	//rectangle成员的值是21

可以使用未命名的枚举类型定义常量

enum {False, True};
//定义了两个常量False和True,值分别是0和1

枚举类型的使用

  • 枚举类型在必要时,如参与算术运算时,会被自动提升为算术类型
  • 能表示枚举成员值的范围
  • 枚举的成员名字是不可打印的,输出的是它所表示的整数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值