美文网首页
联合体(共用体)和枚举

联合体(共用体)和枚举

作者: 耳_总 | 来源:发表于2017-11-26 15:49 被阅读64次

定义:联合体是不同类型的变量公用一块内存,相互覆盖,同时只能存在一种变量,联合体的大小等于最大成员的大小

  • 当结构体有两个相同变量类型的时候,那么这些变量都会被赋值(因为他们用的是同一块内存,自然去相同变量类型取值的时候都能取到)
union MyValue {
    int x;
    int y;
    double z;
};

void main() {
    union MyValue d1;
    d1.x = 10;
    d1.y = 100;
    
    printf("%d,%d,%f",d1.x,d1.y,d1.z);
    getchar();
}

打印:10,10,0.000000
  • 赋值后的联合体最后一次赋值的变量的值有效
d1.x = 10;
    d1.y = 100;
    d1.z = 34.8;
    printf("%d,%d,%f",d1.x,d1.y,d1.z);
打印:1717986918,1717986918,34.800000
  • 应用场景:如果一个函数需要传不同的数据类型的参数的时候,就传入一个联合体。
枚举

和java一样,表示固定的数据

enum Day {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday,
};

void main() {
    enum Day day = Monday;
    printf("%d\n",day);
}
打印:0

枚举的成员定义用“,”隔开,直接用枚举里面的变量名称可以赋值,里面的值(如:Monday)默认值为0;从0开始一次是1、2、3...,但是也是可以赋值的,如:

enum Day {
    Monday = 1,
    Tuesday ,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday,
};

这样样子的话Tuesday为2,一次递增1,后面的值为3、4、5、6、7。

还要一种情况就是部分赋值

enum Day {
    Monday = 1,
    Tuesday,
    Wednesday = 6,
    Thursday,
    Friday,
    Saturday,
    Sunday,
};
enum Day day = Tuesday;
    printf("%d\n",day);
    day = Thursday;
    printf("%d\n",day);

打印:
2
7

这种情况就是赋值的那个之开始递增,碰到有自定义的赋值,之后从新的值递增,就上面而言Monday = 1,Tuesday = 2,到了Wednesday的时候我们自己赋值为6,那么Thursday从6递增,为7,以此类推。

其实枚举里面的成员只能是int类型,相当于int Monday = 1;只是把int省略掉了。

  • 另外枚举是不能够遍历的,遍历不要连续内存。

相关文章

  • 联合体(共用体)和枚举

    定义:联合体是不同类型的变量公用一块内存,相互覆盖,同时只能存在一种变量,联合体的大小等于最大成员的大小 当结构体...

  • (五)C语言之联合体,枚举与IO

    (五)C语言之联合体,枚举与IO 一、联合体(共用体) 1、定义 不同类型的变量共同占用一段内存(相互覆盖),联合...

  • C语言的一些符号含义、 函数含义

    union:共用体/联合体 union 共用体名{成员列表};类似结构体,是一群变量的集合,和集合不同的是: 共用...

  • 嵌入式第十天:结构

    今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。欢迎加入嵌入式学习群:55960...

  • 结构体 联合体 位域

    union 共用体/联合体 结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体...

  • iOS共用体

    iOS共用体 一、何为共用体 在C语言中有union联合体/共用体。 union中可以定义多个成员,union的大...

  • 函数指针,联合体,枚举,结构体和结构体指针

    函数指针 联合体 枚举 别名 结构体 结构体指针

  • C&C++常用方法笔记 -结构体联合体

    结构体 struct 联合体union union,中文名“联合体、共用体”,在某种程度上类似结构体struct的...

  • Day11

    共用体 枚举 枚举的基本概念 枚举的作用域枚举作用域和结构体作用域一样, 定义枚举变量和结构体一样 局部变量和全局...

  • 02--对象本质02--isa本质

    [TOC] 一、联合体 Union 1.1 联合体的特性 联合体 union 也成共用体,有以下特性: union...

网友评论

      本文标题:联合体(共用体)和枚举

      本文链接:https://www.haomeiwen.com/subject/osykbxtx.html