c语言中union的使用

相同类型的数据集合在一起可以用数组;--->每个成员占用不同的内存空间

不同类型的数据集合在一起可以用结构体;--->每个成员占用不同的内存空间

不同类型的数据放在同一段内存单元上,使用共用体。--->每个成员占用同一段的内存空间----->省内存空间

例如:结构体

struct student{

char name[10];

int age;

float length;

};

共用体:

union student{

char name[10];

int age;

float length;

};

共用体所占内存字节数与其成员中占字节数最多的那个成员相等。

共用体变量不能进行初始化;

只能对成员进行单独赋值:

union student  stt;

stt.age = 19;

stt.length = 1.76;

printf("%d",stt.age);------------------->最后的值,是length成员的值,故会将1.76 取整,

共用体只能引用共用体变量的成员。有三种形式:

共用体变量名.成员名

共用体指针->成员名

(*共用体指针).成员名

共用体变量中起作用的是最近一次存入的成员变量的值,原有的成员变量的值将被覆盖。

例如:

利用共用体取出int变量的高字节和低字节的数据

union student{

int a;

char ch[2];

}stt;

stt.a=0x4321;

printf("%x,%x",ch[0],ch[1]);

通信中的数据包会用到共用体。
因为不知道对方会发一个什么包过来,用共用体的话就很简单了,定义几种格式的包,收到包之后就可以直接根据包的格式取出数据。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章