【C++基础语法】结构体

引入:

在之前我们已经学了很多int, char,string,float …等类型,还学到了同类型元素构成的数组。但在实际问题中,一组数据往往具有不同的数据类型 例如,人口大普查时,我们需要记录每一位公民的姓名,年龄,性别,住址,身份证号码。这些信息要用整型,字符型,字符串型等来记录。为了解决问题,我们可以自己构造数据类型一一“结构体”。

结构体可以理解为一种自己定义的数据类型,完成结构体定义后,使用方法与int,char等普通数据类型使用方法相同。
结构体声明

struct stu 
{
    string sname;//一个字符串表示的姓名
    string sid;//一个字符串表示的学号
    int  age;//一个整型表示的年龄
    float height;//一个浮点表示的身高
};//注意分号不能少,这也相当于一条语句;

以上就相当于定义了一种数据类型stu,该数据类型包含4个属性。
但是注意,它并没有创建一个实际的数据对象,而是描述了一个组成这类对象的元素。

因此,我们有时候也将结构体声明叫做模板,因为它勾勒出数据该如何存储,并没有实例化数据对象。

struct声明的位置,一般情况下放在所有函数的外部,这样整个文件都可以使用该结构体

定义结构体变量

(1)与int、float等基本数据类型使用相同:

stu s1,s2;或者
struct stu s1,s2;//s1与s2的类型为stu,每个变量中包含4个属性

(2)声明完结构体后直接定义

struct stu{ 
string … 
…. 
….. 
}s1,s2;

(3)定义结构体数组

stu s1[1000];
string stu{
    string ...
}s1[1000];

(4)结构体的输入输出

cin>>s2.sname>>s2.sid>>s2.age>>s2.height;
cout<<s2.name<<s2.sid>>s2.age>>s2.height;

结构体使用

为了访问结构的成员,使用成员访问运算符(.)。

引用形式:<结构体类型变量名> . <成员名>

注意:结构体变量不能整体引用,只能引用变量成员

结构体排序

//使用sort(),由于结构体有多个属性,需要写cmp函数,指定按哪个属性排序
bool cmp(stu a,stu b){
    return a.age>b.age;//按年龄降序,从大到小
    return a.age<b.age;//按年龄升序,从小到大
}
sort(s1,s1+n,cmp);

也可以根据题目要求创建更加复杂的排序规则。

或者在结构体内重写operator

struct stu 
{
    string sname;//一个字符串表示的姓名
    string sid;//一个字符串表示的学号
    int  age;//一个整型表示的年龄
    float height;//一个浮点表示的身高
    bool operator < (const stu tmp) const{//重写< 号
        return age<tmp.age;//安装年龄从小到大排序
    }
}s1[1000];
省略数组输入
sort(s1,s1+n);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值