什么是struct?struct怎么用?在哪用?有什么好处?
假设你需要记录下你的每个班级同学的个人信息(包含姓名、身高、体重),如果仅仅使用string来记录名字,float来记录身高、体重,若在班级中有30名同学,你就需要像下图一样定义变量
string a,b,c,d,e,f,........ac,ad;
float a_ln,b_ln,c_ln,........ac_ln,ad_ln;
float a_wt,b_wt,c_wt,........ac_wt,ad_wt;
而运用struct则既省时又省力,如下:
struct inf_clsmt /* 在struct后,“{”前填入满足变量名称要求的字符串,
下文中会将“它”定义为一种新变量 */ {
string name;
float ln,wt;
} ; // 分号很重要
// 上文用struct定义数据类型
struct需要写在主函数外,它也算是一种函数。实际运用时,需要定义一个全局变量。
struct inf_clsmt /* 在struct后,“{”前填入满足变量名称要求的字符串,
下文中会将“它”定义为一种新变量 */ {
string name;
float ln,wt;
} ; // 分号很重要
// 上文用struct定义数据类型
inf_clsmt lcx; // 记录作者个人信息
int main(){
}
当你要对结构体中的数据进行操作时,在变量后打一个“.”,然后会跳出以下界面,你可以照着指引一个个字母输入或者双击你需要的选项,自动输入。
用来记录作者个人信息的整体代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
struct inf_clsmt /* 在struct后,“{”前填入满足变量名称要求的字符串,
下文中会将“它”定义为一种新变量 */ {
string name;
float ln,wt;
} ; // 分号很重要
// 上文用struct定义数据类型
inf_clsmt lcx; // 记录作者个人信息
int main(){
cin>>lcx.name>>lcx.ln>>lcx.wt; // 输入个人信息
cout<<lcx.name<<endl<<lcx.ln<<"cm"<<endl<<lcx.wt<<"kg"; // 输出个人信息
}
struct在打包少量数据类型时效果并不明显,所以一般使用时都会使用结构体数组,和一般数组的定义方式相似。以下的程序中,我加入了住址、工作两个变量,让大家更加明确地看出使用的便利:
#include <iostream>
#include <algorithm>
using namespace std;
struct inf_clsmt {// 在struct后,“{”前填入满足变量名称要求的字符串,
//下文中会将“它”定义为一种新变量
char name,address,job;
float ln,wt;
} ; // 分号很重要
// 上文用struct定义数据类型
inf_clsmt lcx[10001] ; // 记录作者个人信息
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>lcx[i].name>>lcx[i].address>>lcx[i].job
>>lcx[i].ln>>lcx[i].wt; // 输入个人信息
}
for(int j=1;j<=n;j++){
cout<<lcx[j].name<<lcx[j].address<<lcx[j].job
<<lcx[j].ln<<lcx[j].wt; // 输出个人信息
}
return 0;
}
谢谢阅读
完