2.3.5 结构体类型
像数组类型那样仅把同一类型的数据放在一起并不能完全满足用户的需求,有时需要将不同类型的数据组成一个整体,以便于使用。这个整体就是结构体类型。
使用struct关键字可以声明合乎自己需要的数据类型,其中的成员可以拥有各种不同的数据类型。结构体类型的声明如下。
- 01 struct employees
- 02 {
- 03 char id[5];
- 04 char name[20];
- 05 char sex[2];
- 06 };
声明了结构体类型后,就可以声明结构体变量了,声明一个结构体变量emp的代码如下。 - employees emp;
可以看出结构体变量的声明和其他变量的声明相同,在声明的同时也可以一起为变量赋值。
【例2.3】 声明一个结构体类型,定义一个结构体类型的变量,并对其进行赋值、输入和输出,程序代码如下。(实例位置:光盘\mr\example\第2章\2.3)
代码位置:光盘\mr\example\第2章\2.3\struct\struct.cpp
- 01 #include "iostream.h"
- 02 struct employees
- 03 {
- 04 int id;
- 05 char name[20];
- 06 char sex[2];
- 07 };
- 08 int main()
- 09 {
- 10 employees emp1,emp2;
- 11 cout<<"输入emp1数据:"<<"\n";
- 12 cout<<"id:";
- 13 cin>>emp1.id;
- 14 cout<<"name:";
- 15 cin>>emp1.name;
- 16 cout<<"sex:";
- 17 cin>>emp1.sex;
- 18 cout<<"输入emp2数据:"<<"\n";
- 19 cout<<"id:";
- 20 cin>>emp2.id;
- 21 cout<<"name:";
- 22 cin>>emp2.name;
- 23 cout<<"sex:";
- 24 cin>>emp2.sex;
- 25 cout<<"输出emp1:"<<"\n";
- 26 cout<<"id="<<emp1.id<<"\n";
- 27 cout<<"name="<<emp1.name<<"\n";
- 28 cout<<"sex="<<emp1.sex<<"\n";
- 29 cout<<"输出emp2:"<<"\n";
- 30 cout<<"id="<<emp2.id<<"\n";
- 31 cout<<"name="<<emp2.name<<"\n";
- 32 cout<<"sex="<<emp2.sex<<"\n";
- 33 }
运行结果如图2.3所示。
|
| 图2.3 运行结果 |
试一试:根据以上程序,定义一个存放学生姓名与成绩的结构体,输入学生的信息,并对其输出。
由上述实例可以看出,结构体变量emp1和emp2的类型是相同的,也可以把它们放到数组中,组成一个结构体数组。
【例2.4】 使用结构体数组改写上述实例,程序代码如下。(实例位置:光盘\mr\example\第2章\2.4)
代码位置:光盘\mr\example\第2章\2.4\structa\structa.cpp
- 01 #include "iostream.h"
- 02 struct employees
- 03 {
- 04 int id;
- 05 char name[20];
- 06 char sex[2];
- 07 };
- 08 int main()
- 09 {
- 10 employees emp[5];
- 11 int i;
- 12 for(i=1;i<3;i++)
- 13 {
- 14 cout<<"输入emp["<<i<<"]数据:"<<"\n";
- 15 cout<<"id:";
- 16 cin>>emp[i].id;
- 17 cout<<"name:";
- 18 cin>>emp[i].name;
- 19 cout<<"sex:";
- 20 cin>>emp[i].sex;
- 21 }
- 22 for(i=1;i<3;i++)
- 23 {
- 24 cout<<"输出emp["<<i<<"]:"<<"\n";
- 25 cout<<"id="<<emp[i].id<<"\n";
- 26 cout<<"name="<<emp[i].name<<"\n";
- 27 cout<<"sex="<<emp[i].sex<<"\n";
- 28 }
- 29 }
运行结果如图2.4所示。
|
| 图2.4 运行结果 |
试一试:根据以上程序,定义一个存放学生年龄与学生姓名的结构体类型的数组,实现学生信息的输入与输出。