结构体学习知识归纳

本文详细介绍了C++中的结构体,包括结构体变量的定义与赋值,结构体成员的获取与赋值方法,以及如何使用结构体进行排序。通过课堂练习和课后作业,展示了结构体在评奖和排队问题中的应用,进一步探讨了结构体排序的注意事项,如保持排序稳定性。同时,提供了进阶习题分数排名的解决方案,强调了在处理结构体数据时的排序和恢复初始顺序的重要性。
摘要由CSDN通过智能技术生成

结构体

在 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
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值