共用体:同一时刻只有一个发生
union 共用体名
{
数据类型 成员1;
数据类型 成员2;
.......
};
定义:
#include <stdio.h> #include <stdlib.h> union test_un { int i ; float f ; double d ; char ch ; }; int main() { union test_un a ; a.f = 3.13; printf("%d ",sizeof(a));//打印:8 所有成员共用一块空间 printf("%f ",a.f); exit(0); }
ps:所有成员共用同一块空间,只有一个成员是有效的。
成员引用:1.变量名.成员名
2.指针名->成员名
大小端:大端---数据低位保存到高地址中
小端---数据低位保存到低地址中
#include <stdio.h> #include <stdlib.h> #include <stdint.h> /*struct//结构体嵌套共用体 { int i ; char ch ; union { int a ; char c ; }un; }; union//共用体嵌套结构体 { int a ; double b ; struct { int arr[10]; float f ; }c; };*/ //4个字节 union { struct { uint16_t i ; uint16_t j ; }x; uint32_t y ; }a; //unsigned int 的数据低16位和高16位相加,结果4466 int main() { //uint32_t i = 0x11223344; //printf("%x ",((i >> 16 ) + i & 0xffff)); a.y = 0x11223344 ; printf("%x ",a.x.i+a.x.j); exit(0); }
枚举类型:集合
enum 标识符
{
成员1,
成员2,
......
};
#include <stdio.h> #include <stdlib.h> enum day { MON, TUS, WEN, THR, FRI, SAT, SUN }; int main() { enum day a = FRI; printf("%d ",a); exit(0);