C笔记系列五:结构体、联合体、枚举

struct

struct 结构体名 {  // 结构体定义
    ...
};

struct 结构体名 变量名;  // 结构体实例化

struct {  // 匿名结构体
    ...
} 变量名;

struct employee {  // 结构体初始化
    char name[32];
    int age;
] e1 = {"Zheng wei", 12};

struct employee el = {"Zheng wei", 12};  // 结构体初始化

union

union 联合体名 {...};  // 定义
union 联合体名 变量名;  // 实例化

联合体与结构体最重要的区别在于其存储空间的分配方式不同。联合体是把各个成员放在同一内存区域中,尽管各个数据成员占用字节数不相同,但起始地址都一样,它用“覆盖”技术,使多个变量互相覆盖。因此联合体变量所占用内存长度是其最长数据成员的长度。

enum

enum 枚举名 {枚举元素列表}; // 定义

在枚举元素列表中以此列出该类型中所有的元素,即枚举常量。若在定义中没给出这些元素的值,则这些元素依次被自动赋值为0,1,2,…。如:enum Color {red, green, black, yellow, blue, white};定义了枚举类型Color,其中red=0,green=1,...,white=5。若给其中某个元素赋值为N,则被赋值元素及其后面元素被赋值为N+i,i为对应元素在被赋值元素后的相对位置。如:enum Color {red, green, black = 0, yellow, blue, white};red=0,green=1,black=0,yellow=1,blue=2,white=3
注意,枚举元素本身是常量,不可在程序中再对其赋值,且每个枚举元素都是一个确定的整型数值。

enum Color {red, yellow, black}; // 定义
enum Color a, b;  // 实例化
a = red;  // 正确
a = 0;    // 错误
a = (enum Color)0; // 正确

猜你喜欢

转载自blog.csdn.net/deepinc/article/details/79673771