8.6.3 共用体类型变量的引用
同样,在C语言程序中只能引用共用体类型变量的成员,不能直接引用共用体变量。引用共用体变量成员一般形式如下:
变量名.成员名
例如:stt1.age=18;
注意:
①共用体是在同一个内存段中存放几种不同类型的成员,但在某一个具体的瞬间,只能存放其中的一个成员,即某一瞬间只有一个成员起作用,不是所有的成员都同时起作用。
②共用体变量中起作用的成员是最后一次存放的成员,前面存放的成员被后面存放的成员所覆盖。
例如:
执行完这两条语句后,只有stt1.score成员有效,stt1.age成员已经被stt1.score成员覆盖了。
③共用体变量的地址与其各成员的地址是同一个地址。即&stt1、&stt1.age、&stt1.score 和&stt1.name是同一个值。
④不能直接对共用体变量赋值,也不能直接引用共用体变量,更不能对共用体变量进行初始化。
⑤共用体变量不能作为函数的参数,函数的返回值不能为共用体变量。
⑥共用体类型可以用于结构体类型定义中,也可以定义共用体类型数组。结构体类型也可以出现在共用体类型定义中,另外,数组可以作为共用体的成员。
⑦ 可以使用指向共用体变量的指针变量。
例8.20 一个简单的学校人员管理程序。输入一组人员信息,包含姓名、性别、年龄、身份(如果是学生,包含学号,如果是教师,包含职称)。
程序如下:
程序运行结果如下:
上面的程序中,将学生的学号和教师的职称作为一个共用体类型(union vocation)的数据的成员,存放在同一段内存单元中,通过结构体类型(struct person)数据的judge成员来进行判定,如果是学生,则输出其学号,如果是教师,则输出其职称。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。