结构体(超简单 菜鸡入门版

注:本文适合第一次接触结构体的友学习

写这篇学习总结最初是因为学到链表的时候发现自己对结构体的掌握还不够透彻 根本不会用

后来去找各种学习资料发现自己根本看不懂(悲(还是老师讲得好 网上的根本看不懂

所以准备以一种更简单的 通俗易懂的方法来讲讲结构体

什么是结构体?

度娘是这么说的:

结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” [1] ,其描述了一块内存区间的大小及解释意义

哈哈,依旧看不懂 (划掉

换种话来说 将若干相同或不同的数据类型存放在一起,成为一个整体 容易理解了吧 (老师的话就是好理解

我们再来举个栗子

能将学号 成绩 姓名这些信息全部装在一起的一个盒子

就是 一个结构体

如何声明结构体?

结合上面的例子 那么在结构体中将要存储的数据类型有三个

  1. 学号(int类型

  1. 姓名(char类型

  1. 成绩(int类型

成员变量则为上面的a b c数组的个个变量

那么定义情况就应该为下

struct Student{
int snum; //学号
char name[100]; //姓名
int score; //成绩
}; 

Q:这是一个学生的成绩信息 那么一个组学生的成绩信息该如何定义呢?

用数组

具体定义情况如下

 struct Student{
int snum; //学号
char name[100]; //姓名
int score; //成绩
}; 
Student a[1001];

当然用string也是可以的

当然是在写文章的时候发现char报好用才来这里补充的

 struct Student{
int snum; //学号
string name; //姓名
int score; //成绩
}; 
Student a[1001];

如何定义结构体?

结构体变量名 . 成员变量

举个栗子

如果我们要输入学生a的成绩信息

那么操作如下

注:两种方式都可

Q:那如果是直接赋值呢?

整体赋值

注意:各个信息之间用逗号隔开!

分开赋值

为什么图不一样了 因为老师PPt上没有只能自己敲了 哈哈

当然两个结构相同的结构体可以互相赋值

在情况一中 a为空结构体

不然你觉得交换为什么要和情况一分开写

输出

直接赋值

输入后再输出

小结

我觉得老师的小结写的挺好的 该注意的地方都有 所以就直接搬来了

其实是我懒不想写

阿西吧我累了 后面还有例题分析没写完 撑住

实战演练

1。成绩排序

分析:这就是前面用来讲解结构体思路的栗子的原题(稍微有些不同

那么咱也不多说什么了 直接放代码

#include <bits/stdc++.h>
using namespace std;
    struct Stu {
    string name;
    int score;
};
    bool cmp(Stu x, Stu y) {
    if (x.score==y.score) //成绩相同,按姓名字典序排序
        return x.name<y.name;
        return x.score>y.score;
}
    int main() {
        Stu a[105];
        int n;
        cin>>n;
    for (int i=1;i<=n;i++) {
    cin>>a[i].name>>a[i].score;
}
    sort(a+1,a+n+1,cmp);
    for (int i=1;i<=n;i++) {
        cout<<a[i].name<<" "<<a[i].score<<endl;
}
return 0;
}

完结撒花!

呵呵 还没完 只是我累了 后面还会找相关的题出来发题解

敬请期待 下一篇关于结构体的题解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值