1. 特征 #
假如有这样的一批数据需要定义
则我们需要这样来写
int student_A_English = 92; int student_A_Chinese = 100; int student_A_Weight = 40; int student_A_Height = 150; int student_B_English = 95; int student_B_Chinese = 90; int student_B_Weight = 45; int student_B_Height = 157; int student_C_English = 90; int student_C_Chinese = 85; int student_C_Weight = 39; int student_C_Height = 140;
这么写,很显然非常繁琐。C++ 有一种专门针对此类数据的做法。
请先分析,上述的数据是否可以分成三组?分组后,每一组需要设置那些变量?
2. 结构体 #
简单来说,我们可以将数据分为三组,而每组的情况如下:
定义 #
这样,每组可以设置 4 个变量。上图的形式,可以写作如下:
// 定义结构体
struct student
{
int English;
int Chinese;
int Weight;
int Height;
};
// 定义变量
student s_A;
s_A.English = 92;
s_A.Chinese = 100;
s_A.Weight = 40;
s_A.Height = 150;
- 一个结构体,可以看做许多变量的集合。
- 结构体中的变量,用法和普通的变量一样。
- 结构体中的变量,可以是其他类型,包括枚举和其他结构体变量。
输入输出举例 #
#include <iostream>
using namespace std;
// 定义结构体
struct student
{
int English;
int Chinese;
int Weight;
int Height;
};
int main()
{
// 定义变量
student s_A;
s_A.English = 92;
s_A.Chinese = 100;
s_A.Weight = 40;
s_A.Height = 150;
cin >> s_A.Chinese;
cout << s_A.English << endl;
return 0;
}
3. 构造函数 #
关于结构体,有一点不同的就是,结构体含有一个构造函数。什么叫构造函数呢?请看示例程序:
#include <iostream>
using namespace std;
// 定义结构体
struct student
{
// 定义结构体的构造函数
student(int _English,
int _Chinese,
int _Weight,
int _Height)
{
m_English = _English;
m_Chinese = _Chinese;
m_Weight = _Weight;
m_Height = _Height;
}
int m_English;
int m_Chinese;
int m_Weight;
int m_Height;
};
int main()
{
// 定义变量
student s_A(92,100,40,150); // 构造函数,使变量赋值变得更加简洁。
//s_A.English = 92;
//s_A.Chinese = 100;
//s_A.Weight = 40;
//s_A.Height = 150;
student s_B(95,90,45,157);
student s_C(90,85,39,140);
cin >> s_A.Chinese;
cout << s_A.English << endl;
return 0;
}
构造函数的函数名和结构体的名字一样!