首页 > 常见问答

&在c语言中是什么意思? C语言union的用法?

c语言union的用法?

在c语言中,union的使用与struct的使用非常相似,主要区别在于union保持了足够的空间来放置多个数据成员中的“一个”,而不是为每个数据成员配置空间所有数据成员共享一个公共空间,并且同一时间只能存储一个数据成员。所有数据成员都有相同的起始地址。具体情况:unionstatemachine{characterintnumberchar*strdoubleexp}union只配置足够大的空间来容纳数据成员的最大长度。例如,最大长度是double类型,因此statemachine空间的大小是double数据类型的大小。union是一个特殊的类,是一种构造类型的数据结构。可以在“联合”中定义许多不同的数据类型。被描述为“union”类型的变量可以加载由“union”定义的任何类型的数据。这些数据共享相同的内存段以节省空间(还有另一种节省空间的类型:位字段)。这是一个非常特殊的地方,也是工会的一个特点。此外,与struct一样,联合默认访问也是公共的,并且具有成员函数。

c语言union的用法?

union本质上是c中的一个结构,其用法与struct类似。当您使用

联合名称{

//。。。member

&在c语言中是什么意思? C语言union的用法?

}若要声明

类型,调用时应在name

uniontypenamevariablename

后缀表达式前添加关键字union表达式标识符以

a.member1=10//a的形式调用成员是union

p->member1=20//p是指向union的指针

但有一些区别:

1。顾名思义,工会是许多成员共享一段记忆。在编译时,选择最长的成员进行声明。也就是说,在下面和程序片段中:

uniona{//声明了三个成员,但是长度不同(sizeof的结果不同,但是机器的结果不同,但是double肯定是最长的),所以编译器会选择double的长度作为uniona的长度

inta1//sizeof(int)=4

floata2//sizeof(float)=8

doublea3//sizeof(double)=16]换句话说,内存中的上述联合声明等价于

structa{

doublea3

}

2。根据第一条的特点,在给联合成员赋值之后,需要注意的是,在使用时必须调用被赋值的成员。

&在c语言中是什么意思?c语言union用法c语言union和struct的区别

原文标题:&在c语言中是什么意思? C语言union的用法?,如若转载,请注明出处:https://www.saibowen.com/wenda/21315.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。