C语言难点专题——enum, struct 和 Union

2019-07-13 23:57发布

C语言常用的几个数据结构, 做一个小总结, 方便查阅:

一: enum

enum没有任何神奇的地方,仅仅是让某些整数值变得有意义, 比如说, 电源开,用0表示,电源关,用1表示, 那么我们可以定义一个变量open, 和close, 表示电源的开和关。 void testEnum() { enum MyEnum{first = 1, second, third}; enum MyEnum typeA = 2;//枚举值,枚举范围中的一 int N = typeA; switch(typeA) { case first: printf("当前取值为: %d", N); break; case second: printf("当前取值为: %d", N); break; case third: printf("当前取值为: %d", N); break; } } 在我看来,枚举值应该可以有多个值可选,比如typeA = sencond, third两个值,但似乎暂时没有看到有人这样用, 需要再斟酌一下这个问题。 从枚举值引用的关系可以看出,enum列举出的任何变量,都不允许重复定义: enum MyEnum{first = 1, second, third}; enum MyEnumA{first = 1, second, third}; //上面引用了first,后面允许再出现类似的枚举定义。

二: struct

  • 声明了一个abc的结构。
struct abc{ int score; };
  • 定义结构(需要带上struct):
struct abc a;//实质上是声明 + 初始化 初始化一个结构: struct abc a = {14}; a = {10}; //wrong 注意不能被两次初始化
  • 当const修饰时:
const struct abc a; a.score = 10; //不容许再次赋值

三: union