C 什么是';标签';联合与结构的关系如何?

C 什么是';标签';联合与结构的关系如何?,c,visual-studio-2010,visual-studio,visual-c++,C,Visual Studio 2010,Visual Studio,Visual C++,在这里,正如我所知,“数据”是一个标签,它是可选的。到底是什么?在声明结构或联合时添加标记有什么好处 在这里,正如我所知,“数据”是一个标签,它是可选的 不,这里没有标签。标记指示对联合的正确解释。例如,如果您的代码分配data.f并将数据传递给另一个函数,并且它读取data.str,那么您的程序将出现大规模故障,可能导致程序崩溃。工会本身没有为函数提供足够的信息来知道使用哪个工会成员 通过添加标记,可以指示哪种解释是正确的。例如: union Data { int i; float

在这里,正如我所知,“数据”是一个标签,它是可选的。到底是什么?在声明结构或联合时添加标记有什么好处

在这里,正如我所知,“数据”是一个标签,它是可选的

不,这里没有标签。标记指示对联合的正确解释。例如,如果您的代码分配
data.f
并将数据传递给另一个函数,并且它读取
data.str
,那么您的程序将出现大规模故障,可能导致程序崩溃。工会本身没有为函数提供足够的信息来知道使用哪个工会成员

通过添加标记,可以指示哪种解释是正确的。例如:

union Data
{
   int i;
   float f;
   char  str[20];
} data;

structure Data
{
   int i;
   float f;
   char  str[20];
} data;
其中type是标记,并指示联合中存储的值的类型。读取
taggeddata
的函数现在可以使用
switch
语句并访问正确的联合成员

标记数据结构的另一个常见名称是。与…相比

struct TaggedData
{
    int type;
    union Data value;
} taggeddata;