帮我解释一下这个题程序吧!谢谢!

来源:百度知道 编辑:UC知道 时间:2024/09/26 20:10:21
//设有若干教师的数据,包含有教师编号,姓名,职称,若职称为讲师(1)
//,则描述他们的所讲课程,若职称为教授(p),则描述他们所写论文数目。

#include "iostream.h"

union cf //共用体类型
{
char clname[30];//所讲课程
int num;//论文数目
};
struct teachers//结构体类型
{
int no;//编号
char name[20];//姓名
char zc;//职称
union cf x;//可变字段,为所讲课程或论文数目(共同体类型)
}teach[3]; //变量x作结构体类型的成员
void main()
{
int i;
for(i=0;i<3;i++)
{
cout<<"input no:"<<endl;
cin>>teach[i].no; //输入教师号
cout<<"input name:"&

额,因为你的结构体对象多啊。
比如:
teach[0].x.clname那么程序先给结构体teach[0]分配空间,当然也给这个结构体里的共用体也分了空间
teach[1].x.clname那么程序先给结构体teach[1]分配空间,当然也给这个结构体里的共用体也分了空间
但是teach[0]跟teach[1]的空间是不同的空间,所以不会冲突
PS:共用体的长度就是其中最长的那个的长度