在结构中使用联合的目的c

时间:2016-06-11 05:39:33

标签: c

typedef struct
{
  int k;
  union
  {
    int i;
    int j;
  }use;

}std;

直接我们可以在结构中使用变量i和j,以便在union中使用它。

2 个答案:

答案 0 :(得分:2)

在你的例子中,即

typedef struct
{
  int k;
  union
  {
    int i;
    int j;
  }use;

}std;

它似乎没有多大意义,因为ij是相同的类型,变量的名称不是描述性的。

如果使代码更容易编写,读取,理解和维护,那么对于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