zoukankan      html  css  js  c++  java
  • C-结构体、枚举

    #include <stdio.h>
    
    //结构体:可以由多个不同类型的数据构成
    int main()
    {
        struct Person
        {   //里面的3个变量,可以称为是结构体的成员或者属性
            int age;
            double height;
            char *name;
        };
        
        struct Person p = {201.55"jack"};//根据结构体类型,定义结构体变量,,,,且只能在定义结构体变量的同时对成员进行依次赋值。
        p.age = 30;
        p.name = "rose";
        
        return 0;
    }
    #include <stdio.h>
    
    int main()
    {   //1.定义结构体类型(并不会分配存储空间)
        struct Date
        {
            int year;
            int month;
            int day;
        };
        
        //2.定义结构体变量(真正分配存储空间)
        struct Date d1 = {2011, 4, 10};
        struct Date d2 = {2011, 8, 9};
        //会将d1 所有成员的值对应地赋值给d2的所有成员
        d2 = d1;
        
        return 0;
    }

    从小到大,从上往下

    #include <stdio.h>
    int main()
    {
        struct Student
        {
            int age;
            char *name;
        }
        
        struct Student stu;
        stu.age = 20;
        stu.name = "jack";
        
        int s = sizeof(stu);
        printf("%d
    ", s);
        
        return 0;
    }
    //输出为:16
    //补齐算法, 结构体所占内存空间,一定为最大成员所占存储空间的倍数,

    变量的多种定义方式:

      

    #include <stdio.h>
    int main()
    {   /*方式一:
         //1.类型
         struct Student
         {
         int age;
         double height;
         char *name;
         };
         //2.变量
         struct Student stu = {20, 1.78, "jack"};
         */
        //方式二
        struct Student
        {
            int age;
            double height;
            char *name;
        } stu;//等同于方式一      //包括两个部分 1,定义结构体类型  2,利用新定义好的类型来定义结构体变量      //即定义类型的同时定义变量
        struct Student stu2;//再次使用S他人的n天
        //方式三
        struct {
            int age;
            char *name;
        } stu;//缺点:不能重用
        
        return 0;
    }

    总结: 定义结构体变量的3种方式

        1,先定义类型再定义变量

            struct Student   {  int age;  };  

            struct Student stu;

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

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

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

            struct  {  int age;  } stu;

    //指向结构体的指针
    int main()
    {
        struct Student
        {
            int no;
            int age;
        };
        
        struct Student stu = {1, 20};
        
        struct Student *p;//指针变量p将来指向struct Student类型的数据
        p = &stu;//指针变量p指向了stu变量
        
        
        //第一种
        printf("age= %d, no=%d
    ", stu.age, stu.no);
    
        //第二种
        printf("age= %d, no=%d
    ", (*p).age, (*p).no);//访问stu的存储空间里的no
        
        //第三种
        printf("age=%d, no=%d
    ", p->age, p->no);
    }

    总结:

    1, struct Student *p;

    2, 利用指针访问结构体成员

     1》 (*P).成员名称

     2》 p->成员名称 

            

    //结构体的嵌套
    int main()
    {
        struct Date
        {
            int year;
            int month;
            int day;
        }
        
        struct Student
        {
            int no;
            //int year;
            //int month;
            //int day;
            
            struct Date birthday;
            struct Date ruxueDate;
        }
        struct Student stu = {1, {2000, 9, 10}, {2012, 9, 12}};
        return 0
    }

    枚举

     

    //枚举
    int main()
    {
        //定义枚举类型
        enum Season
        {
            spring,//0 也可以自定义为1
            summer,//1
            autumn,//2
            winter//3
        };
        //2,定义枚举变量
        enum Season s = summer
        return 0;
    }

    数据类型总结----------------------------------

    基本数据类型

    int

      long int 、 long  8 %ld

      short int 、 short  2 %d %i

      unsigned int、 unsigned  4 %zd

      signed int、 signed、 int  4 %d %i

    float/double

      floar 4 %f

      double 8 %f

    char 1 %c %d

    char类型保存在内存中的是它的ASCII值

    二构造类型

    1,数组

      只能由同一种类型的数据组成、

    2,结构体

      可以由不同类型的数据组成

    三、指针类型

      间接操作变量的值

      

  • 相关阅读:
    HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP
    POJ1185 炮兵阵地 —— 状压DP
    BZOJ1415 聪聪和可可 —— 期望 记忆化搜索
    TopCoder SRM420 Div1 RedIsGood —— 期望
    LightOJ
    LightOJ
    后缀数组小结
    URAL
    POJ3581 Sequence —— 后缀数组
    hdu 5269 ZYB loves Xor I
  • 原文地址:https://www.cnblogs.com/IDRI/p/4928482.html
Copyright © 2011-2022 走看看