计算机等级考试二级考试C语言的联合类型讲解

计算机等级考试二级考试C语言的联合类型讲解,第1张

计算机等级考试二级考试C语言的联合类型讲解,第2张

“联合”和“结构”有一些相似之处。但两者有本质区别。在结构中,每个成员都有自己的内存空,一个结构变量的总长度是每个成员长度的总和。在“联合”中,每个成员共享一个内存空,一个联合变量的长度等于每个成员的最大长度。需要注意的是,这里所谓的共享并不是指多个成员同时加载到一个联合变量中,而是联合变量可以赋予任意成员值,但每次只能赋予一个值,新值会刷新旧值。比如前面提到的“单位”变量,如果定义为可以加载到“班级”或“教研室”的组合,则允许赋予整数值(班级)或字符串(教研室)。给它一个整数值或者一个字符串,不能两个都给。联合类型的定义和联合变量的描述必须先定义联合类型,然后才能将变量描述为联合类型。

一、联合的定义

定义联合类型的一般形式是:

Union name
{
成员表
};

成员表包含几个成员。成员的一般形式是:类型说明符,成员名,成员名的命名要符合标识符的规定。

例如:

union perdata
{
int类;
char office二。关节变量的描述;
};

定义了一个名为perdata的union类型,它包含两个成员,一个是integer,一个是class。另一个是字符数组,数组名是office。定义了联合之后,就可以描述联合变量了。它被描述为perdata类型的变量,可以存储整数类或字符数组office。

[10]

关节变量的描述与结构变量相同,也有三种形式。即先定义,后解释;同时定义描述和直接描述。以perdata类型为例,解释如下:

union perdata
{
int类;
char officiae[10];
};
union perdata a,b;/*解释A和B属于perdata类型*/

或者可以解释为:

union perdata
{
int类;
char office[10];
}

甲、乙;或者直接表述为:

union
{
int类;
char office[10];
}
a、b

解释后的变量A和B属于perdata类型。它们的内存分配图如图7-8所示。变量A和B的长度应该等于perdata的成员中最长的长度,也就是office数组的长度,总共10个字节。从图中可以看出,给定整数值时,变量A和B只使用2个字节,而给定字符数组时,可以使用10个字节。

联合变量的赋值和使用

联合变量的赋值和使用只能在变量的成员上进行。联合变量的成员表示为:联合变量名称。成员名称例如,将A描述为perdata类型的变量后,可以使用a.class a.office不允许仅通过联合变量名进行赋值或其他操作。也不允许初始化关节变量,赋值只能在程序中完成。还应该强调的是,一次只能将一个成员值赋给一个关节变量。换句话说,联合变量的值是联合变量的成员的值。
[例7.15]有一种师生通用的形式。教师数据包括姓名、年龄、职业、教研室四项。学生姓名、年龄、职业、班级四项。

输入程序员的数据,然后在表单中输出。

main()
{
 struct
 {
  char name[10];
  int age;
  char job;
  union
  {
   int class;
   char office[10];
  } depa;
 }body[2];
 int n,i;
 for(i=0;i

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 计算机等级考试二级考试C语言的联合类型讲解

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情