📄 codetc28.dat
字号:
共用体
有时需要使几种不同类型的变量存放到同一段内存单元中.例如,可把一个整型变量,一个字符型变量,一个实型变量放在同一个地址开始的内存单元中.也就是使用覆盖技术, 几个变量互相覆盖.这种使几个不同的变量共占同一段内存的结构,称为"共用体"类型的结构.
定义共用体类型变量的一般形式为
union 共用体名
{
成员表列
}变量列表;
例如: union data
{
int i;
char ch;
float f;
}a,b,c;
也可以将类型声明与变量定义分开:
union data
{
int i;
char ch;
float f;
};
union data a,b,c;
可看到"共用体"与"结构体"的定义形式相似.但它们的含义是不同的.
结构体变量所占内存长度是各成员的内存长度之和.每个成员分别占有其自已的内存单元.
共用体变量所占的内存长度等于最长的成员的长度.
共用体变量的引用方式
只有先定义共用体变量才能引用它.而且不能引用共用体变量,而只能引用共用体变量中的成员.
例如,前面定义了a,b,c为共用体变量,下面的引用方式是正确的:
a.i (引用共用体变量中的类型变量 i)
a.ch (引用共用体变量中的类型变量 ch)
a.f (引用共用体变量中的类型变量 f)
不能只引用共用体变量,下面的引用方式是错误的,例如
printf("%d",a)
共用体类型数据的特点
在使用共用体类型数据时要注意以下一些特点:
(1) 同一个内存段可以用来存放几种不同类型的成员,但在每一瞬间时只能存放其中一种,而不是同时存放几种.也就是说,每一瞬间时只有一个成员起作用,其他的成员不作用 ,即不是同时都存在和起作用的.
(2) 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用.
(3) 共用体变量的地址和它的各成员的地址都是同一地址.
(4) 不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,又不能在定义共用体变量时对它初始化.
(5) 不能把共用体变量作为函数参数,也不能使函数带回共用体变量,但可以使用指向共用体变量的指针.
(6) 共用体类型可以出现在结构体类型定义中,也可以定义共用体数组.反之,结构体可以出现在共用体类型定义中,数组也可以作为共用体的成员.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -