注:本文适合第一次接触结构体的友学习
写这篇学习总结最初是因为学到链表的时候发现自己对结构体的掌握还不够透彻 根本不会用
后来去找各种学习资料发现自己根本看不懂(悲(还是老师讲得好 网上的根本看不懂
所以准备以一种更简单的 通俗易懂的方法来讲讲结构体
什么是结构体?
度娘是这么说的:
结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” [1] ,其描述了一块内存区间的大小及解释意义
哈哈,依旧看不懂 (划掉
换种话来说 将若干相同或不同的数据类型存放在一起,成为一个整体 容易理解了吧 (老师的话就是好理解
我们再来举个栗子
能将学号 成绩 姓名这些信息全部装在一起的一个盒子
就是 一个结构体
如何声明结构体?
结合上面的例子 那么在结构体中将要存储的数据类型有三个
学号(int类型
姓名(char类型
成绩(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;
}
完结撒花!
呵呵 还没完 只是我累了 后面还会找相关的题出来发题解
敬请期待 下一篇关于结构体的题解