联合体和结构体的介绍

来源:本站
导读:目前正在解读《联合体和结构体的介绍》的相关信息,《联合体和结构体的介绍》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《联合体和结构体的介绍》的详细说明。
简介:由于共用体的特点是共用体内的成员共用存储空间,那么遇到一个结构中成员互斥时,可以采用共用体,大家互斥的存在,那么每一次只会有一个成员用这个内存空间,不会存在彼此之间数据覆盖,又节约了内存空间。
另外一种情况,就是像上面举例的一样,共用体中的成员虽然不互斥,但是他们所存储的数据是一样的

联合体,就是一个多个变量的结构同时使用一块内存区域,区域的取值大小为该结构中长度最大的变量的值。

结构体,就是每一个成员都有自己的内存空间。因此,结构体总大小一般情况下等于各成员大小之和(先不考虑内存对齐)。

联合体又叫共用体,每一个成员都共享内存空间。因此,共用体大小等于成员中最大的那个大小。

结构体我就不说了,它用处很广,最常见的是用它保存一个记录。例如,学生管理程序中,一个学生的信息。

共用体,我看见很少人用,就不得不说说了,其实,共用体有很多妙用,用好了,会带来意想不到的效果。如果光用共用体,那么实用性会减少很多,通常和结构体一起使用。

如下题目:

输入一个long,查看它的高位数和低位数。

一般人可能会去移位,但是,如果是用结构体共用体,那么这题根本就是小儿科。 完全可以赋值,输出就OK了。解决这题可以设计这样的结构。

union uq1

{

long value;

struct

{

short lowbit;

short highbit;

} bit;

};

整个共用体还是4字节没有改变. 解决那题,就象这样:

uq1 u;

long v;

v=0x00FF00FF;

u.value=v;

printf("high=%d,low=%dn",u.bit.highbit,u.bit.lowbit);

这题的结果应该是:

high=255,low=255

提醒:《联合体和结构体的介绍》最后刷新时间 2024-03-14 01:01:56,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《联合体和结构体的介绍》该内容的真实性请自行鉴别。