共用体又称联合体,关键字union,正如其名字,其成员变量共同占用同一段内存,这段内存的大小就是所有成员中最大的那个,所以整个共用体变量大小就是其最大成员大小,比如你代码中的A大小就是成员c的大小8个字节。
公司主营业务:做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出兴业免费做网站回馈大家。
共同体不是结构体,它可以存储多种类型的值,但是只能存入一个值。
回答:共同体实现了使不同类型的变量存放到同一段内存单元中的需求。各个类型的在内存中占的字节数可以不同,但都从同一地址开始存放,采用了覆盖技术。
比如,我还是在里面有一个int型和一个char型,那这个共用体就占int型的2个字节,加入我用共用体存入一个char型数据,我可以用int型来读取,读的是二进制数据。
共用体是C语言中的一种数据类型,是指将不同类型的数据项存放于同一段内存单元的一种构造数据类型。
所谓共用体类型是指将不同的数据项组织成一个整体,它们在内存中占用同一段存储单元。
共用体一般指联合体,作用如下:节省内存 有两个很长的数据结构,不会同时使用,用结构体的话,只占用最长的那个数据结构所占用的空间,就足够了。
首先,union un{int i;char c[2];}; // 分号不能省略共用体 之所以叫共用体,就是是因为其元素会共同拥有一块内存空间,对于其中一个成员的赋值,会影响到另一个成员。
共用体一般指联合体,作用如下:节省内存 有两个很长的数据结构,不会同时使用,用结构体的话,只占用最长的那个数据结构所占用的空间,就足够了。
union 共用体名 {成员表列};union data { int a ;float b;doublec;chard;}obj;该形式定义了一个共用体数据类型union data ,定义了共用体数据类型变量obj。
你的程序中,只占一个字节的0x39给了int型的i[0],那这样,高字节为0,假设放在最低地址的内存单元中,那0x39就顺着往上放,i[1]也一样。
而char c取得是最有一个字节,即十六进制的41,对应字符就是A, 而int当然取得就是十六进制的0x2341,转换为10进制就是9025了,对于float,它对应的二进制如下:0 00000000 00000000010001101000001,详细的自己查标准吧。
联合表达了一个共同的记忆体位置的几个变量,在不同的时间不同的数据类型和不同长度的变量。