结构体

作者: 风情云 | 来源:发表于2020-03-12 13:29 被阅读0次

    结构体

    由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体(struct)。

    出现的原因

    假如我们要定义一些学生相关的东西,比如,级别,姓名,分数。那么就要定义三个变量,而且这三个变量在内存不是连续的,维护时会比较困难。传参修改值也会异常困难。结构体应运而生,结构体就可以放某个种类的一些基本性质,这些变量都会在这个结构体的内存块中,定义也会简单,维护起来也不麻烦。


    结构体

    结构体使用

    //struct 结构体名
    struct student
    {
        //定义时不能赋值
        int age;
        char name[20];
        float score;
    };
    //注意;结束
    

    这是一个定义,为结构体数据类型,和基本数据类型,如int是一样的,只是告诉编译器如果定义时该分配多大空间,所以不能在定义时赋值,语法出错。注意,定义是以 ; 结束。

        //定义变量且顺序赋值
        //注意不能漏关键字struct
        struct student s1 = {12,"Tom",76};
        //定义变量乱序赋值
        struct student s3 = {age:12,
                            score:81,
                            name:"Koko"};
        //先定义变量后赋值
        //.操作符赋值
        struct student s2;
        s2.age = 13;
        strcpy(s2.name,"John");
        s2.score = 87;
        //打印s1
        printf("age = %d,name = %s,score = %f\n",s1.age,s1.name,s1.score);
    

    也可以定义一个结构体指针

        //定义结构体指针变量
        struct student *s4 = &s3;
        //->操作符赋值
        s4->age = 18;
        strcpy(s4->name,"Coco");
        s4->score = 90;
    

    注意普通结构体变量是用.操作符赋值,指针变量使用->操作符赋值。定义变量时要带struct关键字,不然编译器不知道此为结构体数据类型,编译出错。

    其他知识点

    结构体可以在定义时,就定义变量

    struct student
    {
        int age;
        char name[20];
        float score;
    }s5,s6;
    //定义变量s5,s6
    //与struct student s5;效果一样
    

    定义结构体时可以不带结构体名字,但是只能在定义时定义变量

    struct 
    {
        int age;
        char name[20];
        float score;
    }s7;
    

    结构体数组

        //定义时赋值
        struct student s[3] = {{22,"a",91},
                               {23,"b",92},
                               {24,"c",93}};
        //定义后赋值
        s[0].age =  21;
    

    结构体嵌套

    //结构体定义
    struct primStudent
    {
        struct student stu;
        int height;
    };
    //赋值
    p.stu.age = 9;
    

    注意事项

    结构体定义时不能赋值,结构体定义结束时以 ; 结束

    结构体简单介绍告一段落


    微信号

    相关文章

      网友评论

        本文标题:结构体

        本文链接:https://www.haomeiwen.com/subject/uceujhtx.html