typedef struct
{
int k;
union
{
int i;
int j;
}use;
}std;
直接我们可以在结构中使用变量i和j,以便在union中使用它。
答案 0 :(得分:2)
在你的例子中,即
typedef struct
{
int k;
union
{
int i;
int j;
}use;
}std;
它似乎没有多大意义,因为i
和j
是相同的类型,变量的名称不是描述性的。
如果使代码更容易编写,读取,理解和维护,那么对于union元素具有相同的类型是有意义的。例如:
...
union
{
int numberOfCars;
int numberOfBicycles;
}use;
...
编写用于处理cars
的代码时,您可以使用numberOfCars
,在编写用于处理bicycles
的代码时,您可以使用numberOfBicycles
。通过这种方式,代码将更容易理解/维护,并且两个代码块仍然可以共享一个共同的结构。
在一个代码块中,您可以:
std carDealer;
carDealer.use.numberOfCars = 9;
在另一个代码块(也许是其他文件)中,您可以:
std bicyclesDealer;
bicyclesDealer.use.numberOfBicycles = 9;
一个更典型的联合案例是元素属于不同类型。
答案 1 :(得分:0)
假设我们希望存储有关组织中员工的信息。 姓名年龄
If grade=HSK(Highly skilled)
hobby name
credit card number
If Grade=SSK(Semi skilled)
Vehicle no.
Distance from Company
我们可以使用单一的结构,但它会导致内存的浪费,或者爱好名称和信用卡号码或车辆号&安培;与com的距离。一次使用。它们都不会同时使用。因此,这里可以有效地使用联合内部结构:
代码:
struct info1
{
char hobby[10];
int crcardno;
};
struct info2
{
char vehno[10];
int dist;
};
union info
{
struct info1 a;
struct info2 b;
};
struct emp
{
char n[20];
char grade[4];
int age;
union info f;
};
struct emp e;
希望你了解.......
来源:http://cboard.cprogramming.com/c-programming/122228-union-inside-structure.html