结构
在《C++基础编程》的基础上,我们这门课程将学习C++面向对象的精髓:封装性,继承性和多态性。那么就要先从结构开始。结构很类似于数组,也是一种自定义数据类型,但区别是数组里面所有的元素都是同一个类型的,而结构里面可以包含不同类型的元素。
结构类型的定义方式为:
struct 结构类型名称{
结构成员表
};
结构类型变量的定义方式与int型变量的定义一样(下面第1行),也可以与结构类型定义放在一起(下面第2行开始):
结构类型名 结构类型变量名;
struct 结构类型名称{
结构成员表
}结构类型变量名列表;
结构类型变量可以是指针,也可以是数组。举个栗子:
struct student{
int id;
char \*name;
int age;
char sex;
float score;
}stu1,stu2,\*pstu,stu[10];
上面是的代码定义了结构类型student,同时定义了它的四个变量,其中*pstu是指向结构student的指针,数组stu有10个元素,每个元素都是一个student变量。结构简单来说就是一种数据类型,所以可以定义一个包含10个结构变量的数组stu。
结构成员的表示和赋值
所谓结构成员,举例来说,就是上例student类型的name、age等属性。成员可以是学习过的各种数据类型:int、char、double、float、bool、数组、指针、类,还可以是另一个结构类型等等。
上面定义了student类型的变量stu1,那么变量stu1就有五个成员,分别是id、name、age、sex、score,用变量名.成员名就可以获取到变量的成员。而如果是指针pstu的话,获取方式就是变量指针->成员名。
获取到成员了,自然能够进行赋值咯,这样才有意义嘛。当然也可以初始化,一切用例子说明:
struct student{
int id;
char *name;
int age;
char sex;
float score;
}stu1={34,"xiaoming",20,'0',96.5},stu2,stu[10];
stu2.id=35;
stu2.name="xiaohong";
stu2.age=19;
stu2.sex='1';
stu2.score=100;
student \*pstu=&stu1;
很好理解,程序同样定义了结构student,并同时定义了student类型的两个变量stu1和stu2,以及一个数组stu。
第7行对stu1进行初始化,方式就是大括号括起来,里面是逗号隔开的成员列表。
第9到13行对stu2的成员进行赋值。
第15行定义指向student的指针pstu,并初始化为指向stu1。
在右侧代码框中编写程序:定义student类型的数组,长度为3,并提示用户输入3个学生的信息。最后输出这3个学生的姓名和成绩。