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; }
构造函数的函数名和结构体的名字一样!