• 随缘结构体,瞎jb讲的,神仙请忽略


                                                                         简略的结构体讲解(基于C语言)更新时间:2019-10-25

                                                                                                  前置技能:点点指针

    结构体的定义和使用

    (1)一般形式

    他的一般格式只这样的(记得struct关键字哟):

    struct 结构体名

    {

    类型名1 成员名1;  //成员类型可以是基本类型或构造型

    类型名2 成员名2;

    ...

    类型名n 成员名n;

    };    //注意不要忘记此处的;

    比如我们要建立一个人的结构体,它就至少包括,身高体重年龄名字等等数据,就可以如下构造:

    struct Human//一个名字为Human的结构体
    {
        double Tall;//身高
        double Weigth;//体重
        int Old=666;//年龄
        char Name[200];//姓名
        //*****等都可以加入的
    };

    (2)定义结构体类型的变量、指针变量和数组

    定义结构体类型变量有以下三种方法

    方法一:在定义结构体类型时,同时定义变量。

    struct Human//一个名字为Human的结构体
    {
    double Tall;//身高
    double Weigth;//体重
    int Old;//年龄
    char Name[200];//姓名
    //*****等都可以加入的
    }stu1,*stu,stus[5];//分别定义了该类型的普通变量,指针,和结构体数组

    方法二:先定义结构体类型,再定义该类型的变量

    struct Human//一个名字为Human的结构体
    {
    double Tall;//身高
    double Weigth;//体重
    int Old;//年龄
    char Name[200];//姓名
    //*****等都可以加入的
    };
    Struct Human stu1,*stu,stus[5]; //分别定义了该类型的普通变量,指针,和结构体数组

    方法三:用类型定义符typedef先给结构体类型名别名,再用别名定义变量

    typedef struct Human//一个名字为Human的结构体
    {
    double Tall;//身高
    double Weigth;//体重
    int Old;//年龄
    char Name[200];//姓名
    //*****等都可以加入的
    }Stu;
    Stu stu1,*stu,stus[5]; //分别定义了该类型的普通变量,指针,和结构体数组

    这里的typedef就是把Human这个类型的结构体,命名为了Stu,Stu就等价于struct Human了。

    typedef还可以把一些类型名很长的简化,比如long long可以变成LL。

    typedef long long LL;

    注意:

    别把结构体类型跟变量弄混了。

    1.类型:不分配内存;变量:分配内存;

    2.类型:不能赋值、存取、运算;变量:可以;

    3.结构体可以嵌套;

    4.结构体成员名与程序中变量名可相同,不会混淆。

    嵌套结构体就是可以在一个结构体了,包含另一个结构体的类型的。

    typedef long long LL;
    struct date{
        int month;
        int year;
     
    };
     
     
    struct student{
        int num;
        char name[20];
        struct date birthday;  /*结构体可嵌套*/
     
    }Stu;

    (3)给结构体变量赋初值

    一般格式:结构体类型 结构体变量名 = {初始表值};

    struct [Student] {
        char name[10];
        char sex;
        int age;
        float score;
    }stu[2]={{"ddd",'f',22,90},{"Su",'M',20,85}};

    不过很不推荐这种,emmm。建议在结构体建立的时候就赋好初值,如下:

    #include <stdio.h>
    struct Human//一个名字为Human的结构体
    {
        double Tall;//身高
        double Weigth;//体重
        int Old=666;//年龄
        char Name[200];//姓名
        //*****等都可以加入的
    };
    int main()
    {
        struct Human a;
        printf("%d ",a.Old);
        return 0;
    }

    方法二:

    struct student{
        char name[10];
        int age;
        float score[5],ave;
    };
    struct student  Stu = {"ZhangSan",22,99,78,99,76,88};

    (4)引用结构体变量中的成员的访问

    a.结构体变量名·成员名:stu1.name

    b.结构体指针变量—>成员名:ps—>name

    c.(*结构体指针变量).成员名:(*ps).name

    d.结构体变量数组名.成员名:stu[0].name

    注:1.求结构体类型数据的字节数   sizeof(变量名或类型名);

    大概就是这些把,emmm构造函数哪些好像是c++的?忘了,下次更新就接着讲链表把。。

  • 相关阅读:
    Java的注释,标识符,标识符的命名规范
    Java入门程序(Java的开发流程)
    EasyMock使用总结
    【转载】 Java并发编程:深入剖析ThreadLocal
    java.util.Stack类中的peek()方法
    Jquery和Ajax
    关于HTTP协议及SOCKET通信
    (转载)session token机制
    TCP/IP知识总结(TCP/IP协议族读书笔记四)
    TCP/IP知识总结(TCP/IP协议族读书笔记三)
  • 原文地址:https://www.cnblogs.com/tp25959/p/11738919.html
Copyright © 2020-2023  润新知