文章目录
结构体
在 C++ 语言中,结构体 (struct) 是复合数据类型的一种。同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
注:在 C 语言中,结构体不能包含函数, C++ 中可以使用函数。
struct 结构体名{
结构体所包含的变量或数组
};
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员( Member )。请看下面的一个例子:
struct stu{
string name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
stu 为结构体名,它包含了 name 、 num 、 age 、 group 、score共 5 个成员。
结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。
注意大括号后面的分号“;“”不能少,这样才是一条完整的语句。
同时结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。例如int 、 float 、 char 等是由 C++ 语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。
结构体变量
既然结构体是一种数据类型,那么就可以用它来定义变量。例如:
struct stu{
string name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
struct stu stu1, stu2;
定义了两个变量 stu1 和 stu2 ,它们都是 stu 类型,都由 5 个成员组成。
注意在 C 语言中关键字 struct 不能少, C++ 可以省略。
这段程序里 stu 就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。
你也可以在定义结构体的同时定义结构体变量:
struct stu{
string name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;
将变量放在结构体定义的最后即可。
成员的获取和赋值
结构体和数组类似,也是一组数据的集合,整体使用没有太大的意义。结构体使用点号 ‘.’ 获取单个成员。获取结构体成员的一般格式为:
结构体变量名.成员名;
通过这种方式可以获取成员的值,也可以给成员赋值:
struct{
string name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1;
int main(){
stu stu1;
//给结构体成员赋值
stu1.name = "Tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'A';
stu1.score = 136.5;
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1