联合是一种数据类型它能在同一个内存空间中储存不同的数据类型(不是同时储存),每一次只能储存一个类型的数据
创建联合和创建结构的方式相同,需要一个联合模板和变量
union hold {
int digit;
double bigfl;
char letter;
}fit;
以上声明了一个可以储存一个Int类型、double类型、char类型的值的联合结构,并且编译器分配联合声明中占最大字节的类型空间,联合声明的变量每一次只能储存一个值,如下所示:
fit.digit = 23; //把 23 储存在 fit,占2字节
fit.bigfl = 2.0; // 清除23,储存 2.0,占8字节
fit.letter = 'h'; // 清除2.0,储存h,占1字节
使用联合类型的数组,其中的联合都大小相等,每个联合都可以储存各种数据类型。
union hold fit; // hold类型的联合变量
union hold save[10]; // 内含10个联合变量的数组
union hold * pu; // 指向hold类型联合变量的指针
和用指针访问结构使用->运算符一样,用指针访问联合时也要使用->运算符: pu = &fit;
x = pu->digit; // 相当于 x = fit.digit
总结:
成员运算符:.,该运算符与结构或联合名一起使用,指定结构或联合的一个成员。
成员运算符:->,该运算符和指向结构或联合的指针一起使用,标识结构或联合的一个成员。
这是C primer plus 第六版本 pdf ,大家有需要的可以去下载,https://xbp.pub/i/ZZ0fb1cc4foMq 还有perl,python,数据分析等一些技能书籍,大家有需要的可以去看看 |