这是我的头文件之一,它由一个具有 4 种不同结构的联合模板组成。
#define MAX 3
union family
{
struct name /*for taking the name and gender of original member*/
{
unsigned char *namess;
unsigned int gender;
union family *ptr_ancestor; /*this is a pointer to his ancestors details*/
}names;
struct male /*for taking the above person's 3 male ancestors details if he is male*/
{
unsigned char husb_names[3][20];
unsigned char wife_names[3][20];
unsigned int wife_status[3];
}male_ancestor;
struct unmarry /*for taking the above person's 3 female parental ancestors if she is female and unmarried*/
{
unsigned int mar;
unsigned char parental_fem[3][20];
unsigned int marit_status[3];
}fem_un;
struct marry /*for taking 3 parental-in-laws details if she is female and married*/
{
unsigned int mar;
unsigned char in_law_fem[3][20];
unsigned int in_marit_status[3];
}fem_marr;
};
extern union family original[MAX]; /*for original person*/
extern union family ancestor_male[MAX]; /*used if he is male for storing his male ancestor details*/
extern union family ancestor_female[MAX]; /*used if she is female*/
extern int x;
我的目标是获取一个人的姓名和性别,并根据该人的性别和婚姻状况存储该人的任何 3 个男性/女性祖先,如下所示..
我的意思是MAX
将有 3 个成员,每个成员将有 3 个祖先。这些祖先将由相应成员的性别决定,如以下条件:
- 如果是男性,则使用
struct male
- 如果女性未婚使用
struct unmarry
- 如果女性已婚使用
struct marry
struct name
用于我们必须为其获取祖先的成员名称和性别,并将其指向*ptr_ancestor
相应的祖先数组(ancestormale 或ancestratefemale)。
内存中的对象是一个联合。行。事实上,我的程序将有一系列联合。数组的每个元素可能在联合中使用不同的结构。在这里我们应该小心分配指针,否则我们可能会在运行时丢失我们的老年人记录。
如果可能,请告诉我如何获取第一个元素的详细信息,即。original[0]
即使在服用original[1]
. 在这里,我只是获取数组的最后一个元素,并且所有以前的记录在运行时都消失了。我没有使用任何其他数据结构或文件。
我的环境是 Windows 上的 Turbo C。