硕彦博创学习记录——2018.7.19(结构体)

1、C语言基本类型:字符型、整型、浮点型
2、结构体(复杂类型):自定义类型
    
3、定义变量:为了分配空间
    类型 变量名;    //注:非陪空间编译器通过类型来分配
    初始化:分配空间的同时赋值
    3.1定义结构体(自定义)类型
        struct 类型名
        {
            ...
            属性1;
            属性2;
            属性3;
            ...
        };
        3.1.1无嵌套结构体:所有属性都是基本类型
            struct people
            {
            //性别
                char sex;
            //姓名
                char name[10];
            //身高
                unsigned short height;
            };
        3.1.2嵌套结构体:属性是一个结构体变量
            struct people
            {
                
            };
            
    3.2定义结构体变量:类型 变量名;
        struct 类型名 变量名;
    3.3引用结构元素:一定要通过结构体变量来引用属性
        变量名.属性
    3.4结构体的分配空间法则:以最大字元素字节对齐
        如char name[10]  char sex   short height
        空间则为:100+2+2=14   因为把char sex的1字节变为2字节
            若将char name[10]变为char name[13]
            空间为:16  为什么?因为共享空间
        1、查找最大元素的类型
        2、每个元素都分配以最大类型的倍数
        3、共享空间?
            这和定义类型时的顺序有关
            如有如下定义:
                int id;
                char name[100];
                short height;
                char sex;
            此时的空间为:4+100+4   
                为什么最后只有一个4呢?
                    因为short只需要2个字节,但是分配了4个字节,其中多出来的两个字节是无用的,而接下来的char
                    只需要1个字节,因此short和char共享4个字节,前两个为short,后两个为char
            再有如下定义:
                char sex;
                int id;
                char name[100];
                short height;
            此时的空间为:4+4+100+4
                此时没有共享空间,所以每个属性都是占用4个字节
        注:GCC编译器可以指定对其方式(这部是C语言的标准)
            __attribute__((packed))  通过此代码可以改变字节对齐方式
    3.5结构体变量之间赋值 注:不同类型的结构体之间不能赋值,同类型之间可以
        struct a,b;
        a=b;
4、结构体数组

练习:
1、打印所有学生信息
2、查找分类>90以上的学生信息        
3、打印最高分学生信息(监哨值法)

4、查找学生分数高于平均的学生信息   

5、用递归来实现二分
6、用二分查找来实现对结构体数组元素的查找(分数)。

题目较简单,不附自己写的代码了,5、6两题见二分法

猜你喜欢

转载自blog.csdn.net/yangwenxiao123456/article/details/81121730
今日推荐