C语言结构体和结构体排序

结构体

结构体是一种构造数据类型
(构造数据类型包括:数组类型、结构体类型、共用体类型)
定义:把不同的数据组合成一个整体。

结构体的一般形式
struct [结构体名称]//struct是关键字
{
    类型标识符   成员名;//成员类型可以是基本型或构造性
    类型标识符   成员名;
    ……
};//不要忘记这里的分号
定义结构体的三种方法
//第一种:先定义结构体类型,在定义变量名
struct student
{
    int num;
    char name[20];
    char sex;
    int age;
    float score;
};
struct student stu1,stu2;
//第二种:定义结构体类型同时定义结构体类型变量
struct student
        { 
         int num;
         char  name[20];
         char sex;
         int age;
         float score;
         char addr[30];
        }stu1,stu2;
//第三种:直接定义结构体类型变量
struct 
        { 
         int num;
         char  name[20];
         char sex;
         int age;
         float score;
         char addr[30];
        }stu1,stu2; 
结构体类型和结构体变量的区别

类型:不分配内存; 变量:分配内存
类型:不能赋值、存取、运算; 变量:可以
结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆

结构体嵌套
//结构体嵌套
struct  date
    {    int month;
          int day;
          int year;
    };
   struct  student
  {   int  num;
       char name[20];
       struct  date  birthday;
  }stu;
结构体排序

结构体排序是将不同类型的数据通过一定的原则进行排序,比如:
成绩单将成绩从大到小排序,输出名字的排名。
代码如下:

//结构体排序
#include<stdio.h>
#include<algorithm>
using namespace std;//引入sort函数
struct student
{
    int a;
    char *name;
}stu1,stu2;  //自定义一个结构体
bool mycmp(student stu1,student stu2){
    if(stu1.a>stu2.a) return true;
    else return false;
}//自定义一个比较函数,通过ture和false来返回大小关系 
int main()
{
    student arr[3];
    arr[0].a=100;
    arr[0].name="liming";
    arr[1].a=95;
    arr[1].name="zhanghong";
    arr[2].a=88;
    arr[2].name="wangmei";
    sort(arr,arr+3,mycmp);
    for(int i=0;i<3;++i){
        printf("%s %d\n",arr[i].name,arr[i].a);
    }
    return 0;
}
  • 17
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值