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;
}
结构体的扩展
- 运算符重载
“运算符重载”常用于解决结构体或自定义数据类型的加法、减法等特殊含义的运算。运算符重载的一般格式为:
类型名 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
枚举类型的使用
- 枚举类型在必要时,如参与算术运算时,会被自动提升为算术类型
- 能表示枚举成员值的范围
- 枚举的成员名字是不可打印的,输出的是它所表示的整数值