zoukankan      html  css  js  c++  java
  • 结构体

    结构体

      为什么会出现结构体

        为了表示一些复杂的数据,而普通的基本类型的变量无法满足要求

      什么叫结构体

        结构体是用户根据自己的实际需要定义的复合数据类型

    #include <stdio.h>
    #include <string.h>
    
    struct Student
    {
        int sid;
        char name[200];
        int age;
    }; //分号不能省
    
    int main()
    {
        struct Student st = {1000, "zhangyan", 20};
        printf("%d %s %d
    ",st.sid, st.name, st.age);
        
        st.sid = 99;
        //st.name = "lisi";  //error
        strcpy(st.name, "lisi");
        st.age = 20;
        printf("%d %s %d
    ",st.sid,st.name, st.age);
        return 0;
    }

      如何使用结构体

        两种方式:

          struct Student st = {1000, "zhangyan", 20};

          struct Student * pst = &st; 

            1. 通过结构体变量名来实现:st.sid

            2.通过指向结构体变量的指针来实现重点

             pst -> sid  pst这个指针变量所指向的结构体变量中的的sid这个成员(通常使用第二个)

       注意事项:

        结构体变量不能加减乘除,但可以相互赋值

        普通结构体变量和结构体指针变量作为函数传参的问题  

    #include <stdio.h>
    #include <string.h>
    
    struct Student
    {
        int sid;
        char name[200];
        int age;
    }; //分号不能省
    
    void f(struct Student * pst);
    void g(struct Student st);
    void g2(struct Student * );
    int main()
    {
        struct Student st; //已经为st分配好地址
        f(&st);
        g2(&st);
        //printf("%d %s %d
    ", st.sid, st.name, st.age);
        return 0;
    }
    //这种方式耗内存,耗时间,不推荐
    void g(struct Student st)
    {
       printf("%d %s %d
    ", st.sid, st.name, st.age);
    }
    
    void g2(struct Student *pst)
    {
        printf("%d %s %d
    ", pst->sid, pst->name, pst->age);
    }
    void f(struct Student * pst)
    {
        (*pst).sid = 99;
        strcpy(pst->name, "zhangsan");
        pst->age = 22;
    }
    #include <stdio.h>
    #include <malloc.h>
    
    struct Student
    {
        int sid;
        int age;
    };
    struct Student * CreatStudent(void);
    void ShowStudent(struct Student *);
    
    int main()
    {
        struct Student * ps;
    
        ps = CreatStudent();
        ShowStudent(ps);
    
        return 0;
    }
    
    void ShowStudent(struct Student * pst)
    {
        printf("%d %d
    ",pst->sid,pst->age);
    }
    struct Student * CreatStudent(void)
    {
        struct Student * p = (struct Student *)malloc(sizeof(struct Student ));
        p->sid = 88;
        p->age = 99;
        return p;
    };

        

  • 相关阅读:
    使用过的一些前端工具
    文档和元素中与几何形状和滚动相关的属性和方法
    文档元素选取和遍历中的一些容易忘记的概念
    只存在于理想中的客户端JavaScript时间线
    JavaScript函数代码和执行上下文--ECMA-262-5
    JavaScript中的闭包
    Git Note
    HDOJ 4463 Outlets 最短路
    HDOJ 4548 美素数
    HDOJ 2544 最短路
  • 原文地址:https://www.cnblogs.com/spore/p/11070876.html
Copyright © 2011-2022 走看看