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

    结构体是一种新的数据类型

    1 struct student{
    2 int ID;
    3 char name;
    4 }; //声明一个结构体,student只是结构体的一个标签,在一个程序中可能有多个结构体
    5 struct student stu1 //用结构体来声明一个变量
    6 typedef struct student STUDENT; //给结构体起一个别名 STUDENT
    7 STUDENT stu2;     //用这个别名来声明一个struct student 类型的变量
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    
    struct sample{
        int data;
        struct sample *next;
    };
    
    struct student{
        int ID;
        char name;
    }stu1;// 直接定义一个struct student 类型的stu1
    
    typedef struct student1{
        int ID;
        char name;
    }STUDENT ;// 只是给结构体struct student1 定义一个别名
    
    STUDENT stu2; //这里才是定义一个struct student1 的变量
    
    //定义指向结构体变量的指针
    //STUDENT *pt;
    //pt=&stu2;
    //上面的方法有问题,不能编译通过
    //只能用下面的方法
    STUDENT *pt=&stu2;
    
    //通过结构体指针访问结构体
    //(*pt).ID = 1;不能编译通过啊!
    
    
    void func(STUDENT stu)
    {
      //结构体作为参数传递给函数,上面的STUDENT stu想对于以下的二条操作
      //stu=stu2
      //stu.ID=stu2.ID;
      //stu.name=stu2.name;
      stu.ID=0;
      stu.name='u';
    }
    //上面的func并不改变stu2的值,但下面的可以
    void funp(STUDENT *p)
    {
      p->ID=1;
      p->name='z';
    }
    //想用指针但有不想改变原来的值用const
    /*  void funp_const(const STUDENT *p) */
    /* { */
    /*   p->ID=1; */
    /*   p->name='z'; */
    /* } */
    /*  */
    
    int main()
    {
      stu2.ID=1;
      (*pt).ID=2;
      pt->ID=3;
      //上面三个都不能在main()外写,也就是说访问结构体成员必须在main里面
    
      func(stu2);
      printf("%d %c",stu2.ID,stu2.name);
      funp(&stu2);
      printf("%d %c",stu2.ID,stu2.name);
      return 0;
    }

  • 相关阅读:
    什么是回归测试?
    单元测试、集成测试、系统测试的侧重点是什么?
    一个测试工程师应具备那些素质?
    你所了解的的软件测试类型都有哪些,简单介绍一下。
    Python
    爬虫-urllib3模块的使用
    爬图片(附,源码)
    MySQL存储引擎:MyISAM和InnoDB的区别
    员工管理系统
    MySQL锁(二)表锁:为什么给小表加字段会导致整个库挂掉?
  • 原文地址:https://www.cnblogs.com/been/p/4244487.html
Copyright © 2011-2022 走看看