• 结构体


    1.typedef

    #include <stdio.h>
    //typedef是为了已存在的数据类型起别名
    //与#define不同的是,#define发生在预处理,typedef发生在编译阶段
    typedef unsigned int ui;
    typedef unsigned long ul;
    int main()
    {
        ui a = 10;
        ul b = 110;
        printf("%d
    ",a);
        printf("%d
    ",b);
        return 0;
    }


    2.结构体的定义  修改 调用

    #include <stdio.h>
    #include <string.h>
    //结构体名称
    struct stu
    {
        //编号 姓名 性别 成绩 年龄 地址
        int id;
        char name[21];//一个中文是两个字符
        char sex;
        int age;
        int score;
        char adde[51];
    };
    int main()
    {
        //定义结构体变量
        //数据类型 (struct stu)
        //按照结构体成员列表顺序依次初始化数据
        struct stu on ={01,"巫妖果子",'',20,90,"江西抚州东乡区"};
        //打印结构体信息
        printf("学号:%d %s,性别:%c,今年%d岁,平均成绩:%d,籍贯:%s人
    ",on.id,on.name,on.sex,on.age,on.score,on.adde);
        //结构体的修改
        on.id=02;
        //字符串拷贝 strcpy(目标字符串,源字符串)
        strcpy(on.name,"果子巫妖");
        printf("学号:%d %s,性别:%c,今年%d岁,平均成绩:%d,籍贯:%s人",on.id,on.name,on.sex,on.age,on.score,on.adde);
        return 0;
    }


    3.结构体数组

    #include <stdio.h>
    //为结构体起别名
    typedef struct stu student;
    struct stu
    {
        //编号 姓名 性别 成绩 年龄 地址
        int id;
        char name[21];//一个中文是两个字符
        char sex;
        int age;
        int score;
        char adde[51];
    };
    
    int main()
    {
        int i;
        //定义结构体数组 数组名 [元素个数]
        student s[3] =
        {
            {01,"巫妖果子",'',20,90,"江西抚州东乡区星港湾"},
            {02,"果子巫妖",'',20,80,"江西抚州东乡区东景花苑"},
            {03,"独孤求败",'',20,100,"江西抚州东乡区学府世家"}
        };
        //通过结构体数组[下标].成员 找到对应内容
        for(i=0;i<3;i++)
        {
            printf("学号:%d %s,性别:%c,今年%d岁,平均成绩:%d,籍贯:%s
    ",
                s[i].id,s[i].name,s[i].sex,s[i].age,s[i].score,s[i].adde);
        }
        return 0;
    }


    4.结构体数组的排序

    #include <stdio.h>
    //为结构体起别名
    typedef struct stu
    {
        //编号 姓名 性别 成绩 年龄 地址
        int id;
        char name[21];//一个中文是两个字符
        char sex;
        int age;
        int score;
    }student;
    void BubbleSort(student* s,int len)
    {
        int i,j;
        student temp;
        for(i = 0 ;i<len-1;i++)
        {
            for(j = 0 ;j<len-1-i;j++)
            {
                //根据成绩排序 两个相邻结构体比较其它成员
                if(s[j].score<s[j+1].score)
                {
                    temp=s[j];
                    s[j]=s[j+1];
                    s[j+1]=temp;
                }
            }
        }
    }
    int main()
    {
        int i;
        student s [2];
        //通过键盘获取学生信息
        for(i=0;i<2;i++)
        {
            scanf("%d%s%s%d%d
    ",&s[i].id,&s[i].name,&s[i].sex,&s[i].age,&s[i].score);
        }
         BubbleSort(s,2);
        for(i=0;i<2;i++)
        {
            printf("学号:%d %s,性别:%s,今年%d岁,平均成绩:%d",
                s[i].id,s[i].name,s[i].sex,s[i].age,s[i].score);
        }    
        return 0;
    }

    5.结构体赋值

    #include <stdio.h>
    #include <string.h>
    
    struct stu
    {
        char name[21];
        int age;
        char sex;
    };
    
    int main()
    {
        struct stu s;
        struct stu s1;
        strcpy(s.name,"玉兔");
        s.age=18;
        s.sex='F';
    
        s1=s;
    
        printf("姓名:%s
    ",s1.name);
        printf("性别:%s
    ",s1.sex =='M'?"":"");
        printf("年龄:%d
    ",s1.age);
        return 0;
    }


    6.结构器嵌套

    #include <stdio.h>
    #include <string.h>
    struct Person
    {
        char name[21];
        char profession [10];//职业
        char sex;
    };
    struct equip//装备
    {
        struct Person p;
        int Clearlevel;//铭文等级
        char responsible [20];//负责
    };
    int main(void)
    {
    
        //为结构体赋值
        struct equip e;//struct equip数据类型
        strcpy(e.p.name,"老亚瑟");
        strcpy(e.p.profession,"坦克/战士");
        e.p.sex='';
        e.Clearlevel=150;
        strcpy(e.responsible,"保护射手/负责游走");
        printf("%s是一名:%s,性别:%c,铭文等级:%d级负责%s",
            e.p.name,e.p.profession,e.p.sex,e.Clearlevel,e.responsible);
        return 0;
    }


    7.共用体(联合体)

    • 联合union是一个能在同一个存储空间存储不同类型数据的类型
    • 联合体所占的内存长度等于其最长成员的长度倍速,也有叫做共用体
    • 同一内存端可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用:
    1. 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖
    2. 共用体变量的地址和它的个成员的地址都是同一地址

    8.链表

     

  • 相关阅读:
    Silverlight 自定义表格 转
    Application_BeginRequest事件过滤恶意提交
    存储过程学习1
    我是博客园新博客
    努力将SQL Server像玩游戏一样熟练
    【Demo 0003】支持交互的应用
    【Demo 0003】支持交互的应用
    linux终端快捷键
    vim与windows/linux之间的复制粘贴小结
    vimgrep简单使用
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10383920.html
Copyright © 2020-2023  润新知