黑马程序员------C语言-----结构体和枚举

来源:互联网 发布:淘宝瓜子是什么类目 编辑:程序博客网 时间:2024/05/16 06:06
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一:结构体

结构体:由一系列具有相同类型或不同类型的数据构成的数据集合

 数组:只能由多个相同类型的数据构成
 结构体:可以由多个不同类型的数据构成
1>.定义结构体类型

    struct Person    {        // 里面的3个变量,可以称为是结构体的成员或者属性        int age;        // 年龄        double height;  // 身高        char *name;    //  姓名    };


2>.根据结构体类型,定义结构体变量

    struct Person p = {32, 1.75, "Colin"};    p.age = 30;    p.name = "rose";    printf("age=%d, name=%s, height=%f\n", p.age, p.name, p.height);//错误写法//    struct Person p2;//   p2 = {30, 1.67, "jack"};



结构体内存分析
结构体所占用的存储空间 必须是 最大成员字数的倍数 ----->补齐算法(对齐算法)


定义结构体变量的3种方式
 1>先定义类型,再定义变量(分开定义)

 struct Student {     int age; }; struct Student stu;

 2>定义类型的同时定义变量


 struct Student {     int age; } stu; struct Student stu2;

 3>定义类型的同时定义变量(省略了类型名称)


 struct {     int age; } stu;


结构体数组 :
 能存放3个结构体变量,每个结构体变量占16个字节


    struct RankRecord records[3] =    {        {1, "jack", 5000},        {2, "jim", 500},        {3, "jake", 300}    };//错误写法 records[0] = {4, "rose", 9000};


结构体与指针
 1.指向结构体的指针的定义

 struct Student *p;

 2.利用指针访问结构体的成员
 1> (*p).成员名称
 2> p->成员名称


int main(){    struct Student    {        int no;        int age;    };    // 结构体变量    struct Student stu = {1, 20};    // 指针变量p将来指向struct Student类型的数据    struct Student *p;    // 指针变量p指向了stu变量    p = &stu;    p->age = 30;    // 第一种方式    printf("age=%d, no=%d\n", stu.age, stu.no);    // 第二种方式    printf("age=%d, no=%d\n", (*p).age, (*p).no);    // 第三张方式    printf("age=%d, no=%d\n", p->age, p->no);    return 0;}


结构体的嵌套


int main(){    struct Date    {        int year;        int month;        int day;    };        // 类型    struct Student    {        int no;   // 学号        struct Date birthday;   // 生日        struct Date ruxueDate;  // 入学日期        // 这种写法是错误的        // struct Student stu;    };    struct Student stu = {1, {2000, 9, 10}, {2012, 9, 10}};    printf("year=%d,month=%d,day=%d\n", stu.birthday.year, stu.birthday.month, stu.birthday.day);    return 0;}


二.枚举

定义:将变量的值一一列出来,变量的值只限于列举出来的值的范围内


int main(){    enum Sex{ Man, Woman, Unknow};    // 0男  1女  -1不详    // int sex = -1;    enum Sex s = Unknow;    // 1.定义枚举类型    enum Season    {        spring,        summer,        autumn,        winter    };        // 2.定义枚举类型    enum Season s1 = winter;        printf("%d\n", s1);        return 0;}


0 0
原创粉丝点击