1自定义数据类型

Posted aaakihi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1自定义数据类型相关的知识,希望对你有一定的参考价值。

 

1、结构体:存放一组不同类型的数据

  • 结构体的定义
    struct student
     
         int num;
       float MathScore; float EnlishScore; stu1;

    也可以用typedef来定义

     typedef struct  student
     
         int num;
    float MathScore; float EnlishScore; stu;
  • 也可以定义结构体数组和指针
    struct student
     
         int num;
        float MathScore;
         float EnlishScore;
     stu1,*stu2,stu3[10];
  • 结构体的使用
    • 普通的结构体变量
          stu1 =  1,66,88 ;
      
          printf("%d\n", stu1.num);
          printf("%f\n", stu1.MathScore);
          printf("%f\n", stu1.EnlishScore);
    • 结构体指针变量
      #include <stdio.h>
      
      struct student
      
          int num;
          float MathScore;
          float EnlishScore;
      ;
      int main()
      
          student stu1;
          stu1 =  12, 66.6,76.5 ;
          student *pstu = &stu1;
          printf("学号是%d,今年的数学成绩是%.1f,今年的英语成绩是%lf!\n", (*pstu).num, (*pstu).MathScore, (*pstu).EnlishScore);
          printf("学号是%d,今年的数学成绩是%.1f, 今年的英语成绩是%lf!\n", pstu->num, pstu->MathScore, pstu->EnlishScore);
          return 0; 
      
  • 结构体的初始化
    stu1 =  12, 66.6,76.5 ;

     

    stus[] = 
        "Zhou ping", 5, 18, C, 145.0,
        "Zhang ping", 4, 19, A, 130.5,
        "Liu fang", 1, 18, A, 148.5,
        "Cheng ling", 2, 17, F, 139.0,
        "Wang ming", 3, 17, B, 144.5
    ;

     2、枚举类型:C语言提供了一种枚举(Enum)类型,能够列出所有可能的取值

  • 枚举类型的定义

    enum typeName valueName1, valueName2, valueName3, ...... ;

    enum是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的唯一用途;typeName是枚举类型的名字;valueName1, valueName2, valueName3, ......是每个值对应的名字的列表。                

  • 枚举类型的初始化
    enum week Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6, Sun = 7 ;//依次对week成员赋值;
    enum week a, b, c;//如何没有直接赋值,则从第一个成员为0,后面的成员依次增加;
    enum week a, b=5, c;//前面不变,b=5,后面依次增加;

     

  • 枚举类型的使用
    #include <stdio.h>  
    #include <stdlib.h>  
    
    typedef enum weekday  mon, tue, wen, tur, fri, sat, sun Weekday;
    
    Weekday test_enum()
    
        Weekday Today = mon;
        return Today;
    
    
    int main()
    
        printf("%d\n", test_enum());  //输出0;
        return 0;
    

    3、共用体 

  • 定义共用体并创建变量
    union data
        int n;
        char ch;
        double f;
     a, b, c;

     

  • 与结构体一样,共用体也是存放不同数据类型的变量
  • 结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
  • 结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。

以上是关于1自定义数据类型的主要内容,如果未能解决你的问题,请参考以下文章

1自定义数据类型

达梦数据库的自定义类型

C语言自定义数据类型:结构体,枚举,联合

C语言自定义数据类型:结构体,枚举,联合

C语言自定义数据类型:结构体,枚举,联合

大数据Flume自定义类型