1、 什么是共用体?
在共用体里面可以定义多个变量,数量没有限制,但是,无论定义多少个变量,共用体所分配的内存空间,只会
根据长度最大的那个变量去分配,所以,在同一个时刻里面,只会有一个变量的值存在于所分配的内存空间中,
也就是说,在同一个时刻里面只,共用体中只有一个变量起作用。
2、共用体定义的语法格式1:
union 共用体名字
{
成员1;
...
成员n;
}变量1,变量2,..变量n;
语法格式分析:
(1)以关键字union开始。
(2)共用体名字,按照变量名命名规则定义即可。
(3)一对大括号。
(4)大括号中可以定义共用体中要存放的成员,而成员的定义就是变量的定义,成员数量不限。
(5)大括号后所定义的就是共用体变量,多个变量之间以逗号分隔。
3、共用体定义的语法格式2:
union 共用体名字
{
成员1;
...
成员n;
};
union 共用体名字 变量1,变量2,..变量n;
语法格式分析:
(1)以关键字union开始。
(2)共用体名字,按照变量名命名规则定义即可。
(3)一对大括号。
(4)分号,说明共用体定义结束。
(5)以union开始,后面接着写上已经定义的共用体名字,然后,再写上要定义的共用体变量,
每个变量之间以逗号分隔。
4、例子:
union UN //定义了共用体UN
{
int i;
char c;
float f;
};
union UN a,b,c;
5、共用体变量的引用语法格式:
共用体变量名.共用体中的成员名
语法格式分析:
(1)已经定义的共用体变量名。
(2)一个点号运算符,格式要求不能省略。
(3)共用体中的成员名字。
例子:
//使用上面4、例子中定义的UN共用体所定义的变量
a.i; //通过共用体变量a调用了成员 i 。
6、共用体的特性总结:
(1)共用体虽然可以存放多个成员,但是,每一次只可以有一个成员起作用。
(2)共用体变量调用成员时,只有最后调用的成员起作用。
例子:
//使用上面例子中定义的UN共用体所定义的变量
a.x = 10;//通过共用体变量a调用了成员x,并赋值为10。
a.y = 'z';//通过共用体变量a调用了成员y,并赋值为字符'z'。
a.z = 3.5;//通过共用体变量a调用了成员z,并赋值为1.5。
例子分析:
在上面的3行代码中,最后是通过共用体变量a调用了成员z,并赋值了3.5,因为,它是最后
调用的,所以,只有a.z起作用,其它两行代码已经没有意义,因为,第一个特性说明了,每一次
只可以有一个成员起作用。
(3)共用体变量的内存地址与共用体中的所有成员的内存地址是一样的。
例如:使用上面例子中定义的UN共用体与它所定义的变量a为例,&a 与 &a.x、&a.y、
&a.z 的内存地址是一样的。因为,它们都是在同一个内存地址开始的内存空间中。
(4)不能对共用体变量名赋值或引用。
例如:使用上面例子中定义的UN共用体与它所定义的变量a为例,
a = 11; //错误,不能对共用体a赋值。
int n = a;//错误,不能引用共体体a。
(5)不能在共用体定义时进行初始化。
例子:
union UN //定义了共用体UN
{
int x;
char y;
float z;
} a = { 10,'c',6.5 }; //错误,不能在定义时初始化。
(6)不能把共用体作为函数参数,也不能返回共用体变量,但可以使用共用体变量指针。
(7)共用体可以定义在结构体中,而结构体也可以定义在共用体中。
例子:
struct
{
int x;
union
{
char y;
float z;
}test; //结构体中定义了共用体变量test
};
(8)可以定义共用体数组,而数组也可以作为共用体的成员。
例子:
union UN //定义了共用体UN
{
int x;
char y;
float z[3]; //定义数组成员z
};
union UN a[2]; //定义了共用体数组a
=======================================================================
非常好,现在,我们已经掌握了C语言中的(共用体)但是,如何去运行用它呢?
所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。
>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行编程训练)
|