首页 理论教育 C语言程序设计基础教程-共用体的使用及注意事项

C语言程序设计基础教程-共用体的使用及注意事项

时间:2023-10-27 理论教育 版权反馈
【摘要】:共用体变量的引用格式:共用体变量名.成员名功能:引用共用体变量中指定名称的成员变量。②每改变一个成员的值,共用体中其他成员的值都可能改变,因此,共用体变量中起作用的是最后一次改写的成员。任务总结共用体总是存储最后一个数据的值,因为在共用体中每一瞬间只能存放其中一个成员,而不是同时存放几个。但是,可以对两个同类型的共用体进行赋值。

C语言程序设计基础教程-共用体的使用及注意事项

任务描述

共用体是使几个类型相同或不同的成员变量占用同一段内存的结构。它与结构体类似,都属于构造数据类型,都由若干类型可以互不相同的成员组成。但不同的是,结构体变量的各个成员拥有自己独立存储单元,而共用体变量的各个成员“共用”一段内存,该内存段允许各成员在不同的时间分别起作用。

说明:

共用体各成员变量的存储空间是相互覆盖的,一个成员变量值的改变会影响其他成员变量。

共用体变量所占的存储空间不是多个成员变量所占空间的和,而是所有成员中存储空间最大值。

知识学习

(1)共用体的定义

格式:

功能:

定义一种共用体类型与若干该类型的共用体变量。

例如:

说明:

共用体类型的声明与共用体变量的定义可以分开,也可以直接定义共用体变量。如下:

注意:

共用体可以出现在结构体类型的定义中,反之也可。

(2)共用体变量的引用

格式:共用体变量名.成员名

功能:引用共用体变量中指定名称的成员变量。

例如:

说明:

①共用体变量的地址和其各成员的地址相同。

②每改变一个成员的值,共用体中其他成员的值都可能改变,因此,共用体变量中起作用的是最后一次改写的成员。

③共用体变量不能整体赋值,也不能初始化。以下两条语句均不正确:

union udata data1,data2 ={'A',5,2.3};(www.xing528.com)

data2 ='B';

④共用体变量不能作函数参数或函数返回值,但可以使用指向共用体变量的指针

例8.17 某门课程,部分学生选修,部分学生必修。对选修学生按等级制打分,分A、B、C、D、E 五级,对必修课学生按百分制打分。然后进行输入输出。

说明:

可以在主函数内定义结构体和共用体,此时两者只在主函数内部起作用。

任务总结

共用体总是存储最后一个数据的值,因为在共用体中每一瞬间只能存放其中一个成员,而不是同时存放几个。因为在每一个存储的瞬间,存储单元只能有唯一的内容,在共用体变量中只能存一个值,所以可以说是共用体存在内存覆盖,不管有多少个数据,只会存放最后一个元素的值,原有的值会被取代。

由于共用体的第一个性质,所以对共用体进行初始化的时候,在初始化表中只能有一个变量,下面举例:

}a={1,'a',1.5}; / /错了,占用同一段存储单元

union Data a={16}; / /正确,对第一个成员进行初始化

union Data a={.ch='j'}; / /可以对指定的成员进行初始化

不能对共用体进行赋值,也不能通过引用变量名来得到一个值

举两个错误的例子。

①a=1,这样不知道给哪一个赋值,所以错了;

②m=a,不能通过引用变量名得到一个值赋给整型变量m。

但是,可以对两个同类型的共用体进行赋值。

比如a=b;这样是完全可以的,这一点又和结构体有异曲同工之妙。

特别注意:

只有先定义了共用体变量才可以引用它,但是,不能引用共用体变量,只能引用共用体变量中的成员:

a.i (引用共用体变量中的整型变量i)

a.ch(引用共用体变量中的字符变量ch)

a.f(引用共用体变量中的实型变量f)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈