c语言联合函数的使用 c语言结构与联合

C语言中联合体(union)的使用

联合体又被称为共用体,我个人感觉,共用体名字更合理。

创新互联公司-专业网站定制、快速模板网站建设、高性价比东乡族网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式东乡族网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖东乡族地区。费用合理售后完善,十多年实体公司更值得信赖。

和结构体同属于C语言数据类型中的结构类型。

例如

uniuon data{ int i ; char c ;float f;}x;定义共用体类型名称为data类型,有三个属性,分别为

int i ; char c ;float f;这三个属性共同占用内存空间,所以空间占用选属性中占用最多的那个,也就是float f。占用四个字节。由于共同占用,所以在同一时间只能保留一个属性内容

如果为

struct data{ int i ; char c ;float f;}x;则表明定义结构体类型名称为data类型,也是三个属性,不过在内存中占用的是空间大小是三个属性之和。若int类型在编译器中分配4字节的话,总共分配字节数位4+1+4总共9字节。

由于单独占用,所以在同一时间可以保留所有属性内容

C语言union函数

首先union不是函数,是类型。

这个union一共4个字节,首先给它赋值 i[0] = 0x39,然后给 i[1] = 0x38

因此整段内存就被赋值了 0x39 0x00 0x38 0x00,数组c从0到3分别就是这几个,因此c[0]就是0x39

k 自然就是0x00380039

C语言中union如何使用,请给出具体的案例

C语言中,union的使用与struct 的用法非常类似,主要区别在于union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。

具体的案例:

union StateMachine

{

char character;

int number;

char *str;

double exp;

};

一个union 只配置一个足够大的空间以来容纳最大长度的数据成员,以上例而言,最大长度是double 型态,所以StateMachine 的空间大小就是double 数据类型的大小。

union,即“联合”,是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的(还有一个节省空间的类型:位域)。 这是一个非常特殊的地方,也是联合的特征。另外,同struct一样,联合默认访问权限也是公有的,并且,也具有成员函数。


分享标题:c语言联合函数的使用 c语言结构与联合
路径分享:http://azwzsj.com/article/doejjcd.html