运用共用体,制定职工婚姻状况信息表

由于同一内存单元在同一个时刻只能存放其中一种类型的成员,即同一时刻只有一个成员有意义。因此,在同一时刻起作用的成员就是最后一次被赋值的成员。正因如此,不能为共用体的所有成员同时进行初始化,只能对第一个成员进行初始化
采用共用体存储程序中逻辑相关但情况互斥的变量时,使其共享内存空间的好处是除了可以节省内存空间以外,还可以避免因操作失误而引起逻辑上的冲突。

代码展示(部分):

#include<stdio.h>
struct date
{
    
    
	int year;
	int month;
	int day;
};
struct marriedstate
{
    
    
	struct date marryday;
	char spousename[20];
	int child;
};
struct divorcestate
{
    
    
	struct date divorceday;
	int child;
};
struct widowedstate
{
    
    
	struct date widowedday;
	char spousename[20];
	int child;
};
union marritalstate
{
    
    
	char single[20];
	struct marriedstate married;
    struct divorcestate divorced;
    struct widowedstate widowed;
};
struct person
{
    
    
	char name[20];
	int sex;
	int age;
	int marryflag;
	union marritalstate marital;
};
void input(struct person per[4]);
void output(struct person per[4]);
void selectsex();
void selectmarrital();

int main()
{
    
    
	struct person per[4];
	input(per);
	output(per);
	return 0;
}

未给出相应子函代码展示;

代码分析:
建立的几处结构体,且涉及结构体之间的嵌套。
最后都放在了共用体内便于节省内存空间且逻辑清晰,更凸显代码的功能性。

union marritalstate
{
    
    
	char single[20];
	struct marriedstate married;
    struct divorcestate divorced;
    struct widowedstate widowed;
};

之后的子函一般应用语句为:
如:
per[i].marital.divorced.divorceday.day=day;

猜你喜欢

转载自blog.csdn.net/yooppa/article/details/113358907