一位蒟蒻的自学笔记,有不对的地方请指出。
s
r
O
神
犇
O
r
z
srO\quad神犇\quad Orz
srO神犇Orz
结构体笔记
一、结构体:
它是将不同类型的数据存放在一起,作为一个整体进行处理的结构。
定义如下:
#include<bits/stdc++.h>
using namespace std;
typedef struct{
int n;
}name;
int main(){
return 0;
}
那么,这个 typedef 又是什么呢?
二、 typedef:
typedef 为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型
(int,char等)和自定义的数据类型(struct等)。
三、结构体的基本结构:
#include<bits/stdc++.h>
using namespace std;
typedef struct{
/*数据类型 数据名称*/;
/*数据类型 数据名称*/;
/*数据类型 数据名称*/;
/*……*/;
}/*变量名*/; //分号莫要少
int main(){
return 0;
}
四、结构体的赋值:
结构体的每个变量都是需要赋值的。可以用输入流和格式化输入,或如下方法:
#include<bits/stdc++.h>
using namespace std;
typedef struct{
int n;
string a;
}book;
int main(){
book s1{
3,
"Hello, World!"
};
cout<<s1.a<<endl;
cout<<s1.n<<endl;
return 0;
}
输出如下:
附:关于结构体输入和输出的变量名称:
cin>>/*赋值名称.变量名称*/;
cout<</*赋值名称.变量名称*/;
中间是个点!别把它忘了。
五、给结构体赋值的基本结构:
#include<bits/stdc++.h>
using namespace std;
typedef struct{
int n;
string a;
}book;//定义book为结构体名
int main(){
book s1{//book为结构体名,s1是接下来输出要用的,暂时叫它赋值名称
3,//注意这里是逗号
"Hello, World!" //最后一行无逗号
/*定义了几个变量就写几行,且变量类型要对应*/
};
/*输出格式:复制名称.变量名称*/
cout<<s1.a<<endl;
cout<<s1.n<<endl;
return 0;
}
六、结构体的应用
假如要输出王五、李四等的相关信息,该怎么办?
1. 普通结构体
#include<bits/stdc++.h>
using namespace std;
typedef struct zhangsan{
string name;
int age;
int schoolnumber;
};
typedef struct lisi{
string name; //变量名可以重复
int age;
int schoolnumber;
};
int main(){
zhangsan s1{
"张三",
1996126,
15635
};
lisi s2{
"李四",
1997520,
163819
};
cout<<s1.name<<' '<<s1.age<<' '<<s1.schoolnumber;
cout<<endl; //换行
cout<<s2.name<<' '<<s2.age<<' '<<s2.schoolnumber;
return 0;
}
2. 高级结构体
#include<bits/stdc++.h>
using namespace std;
typedef struct student{
string name;
int age;
int num;
}stu;
int main(){
struct student stuArray[3]={
{"张三",1996126,1652},
{"李四",1997520,4695},
{"王五",1995318,3155}
};
for(int i=0;i<3;i++){
cout<<"第"<<i+1<<"个学生的信息"<<':';
cout<<stuArray[i].name<<' '<<stuArray[i].age<<' '<<stuArray[i].num;
cout<<endl;
}
return 0;
}
七、结构体的输入
上面我们只说到了结构体的应用等,而只有这些肯定是不行的。做题是总不能只让电脑输出吧?
那么怎么输入呢?
很简单:
#include<bits/stdc++.h>
using namespace std;
typedef struct student{
string name;
int age;
}stu;
int main(){
struct student stuArray[3];
for(int i=0;i<3;i++){
cin>>stuArray[i].name>>stuArray[i].age;
}
for(int i=0;i<3;i++){
cout<<"第"<<i+1<<"个学生的信息"<<':';
cout<<stuArray[i].name<<' '<<stuArray[i].age<<' ';
cout<<endl;
}
return 0;
}
运行结果如下:
T h e E n d {\color{Yellow}\colorbox{Pink}{$\mathrm{The\; End}$}} TheEnd
蒟 蒻 自 学 笔 记 本 底 线 蒟蒻自学笔记本底线 蒟蒻自学笔记本底线