day8 c:结构体和枚举

结构体

现实生活中的对象

属性:静态数据   方法:行为

c语言的结构体类似于其他语言中的类,但结构体中只有属性没有方法

struct student{

        int id;

        char name[25];

        char gender;

        int chinese;

        int math;

        int english;

}

int main(void){

        struct student s1={1,"xixi",'F',100,100,100};

        return 0;

}

内存模型 

1.一片连续的内存空间   2.按声明的顺序存放一个个成员(会有填充,填充是为了对齐)

 

结构体变量起别名

typedef 类型 别名

typedef struct{

        int id;

        char name[25];

        char gender;

        int chinese;

        int math;

        int english;

}Student , *pStudent  ;   //不要给指针类型起别名(除非出现新的概念)

Student *p;

//结构体类型A,生成了3个变量 A x; A y; A z;

struct A{

        int a;

}x,y,z;

//匿名结构体:只能被引用一次

struct {

        int a;

}x,y,z;

课堂练习

 

void sort_students(Student* p[],int n){

        for(int i=0;i<n-1;i++){

                int max=p[i]->chinese+p[i]->math+p[i]->english;

                for(j=i+1;j<n;j++){

                        int a=p[j]->chinese+p[j]->math+p[j]->english;

                        if(max<a){

                                Student* temp=p[i];

                                p[i]=p[j];

                                p[j]=temp;

                        }

                }                     

        }

}

print_stu(Student* s){

        printf("%d%s",s-->id,s-->name);

 }

typedef struct{

        int id;

        char name[25];

        char gender;

        int chinese;

        int math;

        int english;

}Student;

int main(void){

        Student s[5];

        for(int i=0;i<5;i++){                     scanf(%d%s %c%d%d%d,&s[i].id,&s[i].name,&s[i].gender,&s[i].chinese,&s[i].math,&s[i].english);

        }//char型scanf将所有空白字符转成一个

        Student* pstus[5]={s,s+1,s+2,s+3,s+4};

        sort_students(pstus,5);

        for(int i=0;i<5;i++){

                print_stu(pstus[i]);

        }

}

枚举

表示一些离散值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值