区分两个不同的结构,嵌套在一个联合中,在 C 中具有共同的属性
Discriminating between two different structs, nested in a union, with common attributes in C
鉴于这个快速完成的示例,我希望能够通过公共属性(color
或 mainFoodSource
)搜索 animals
数组并仅输出 bears
,或 snake
s 具有指定的匹配属性。
鉴于我的 animals
数组定义如下:
struct animal{
char key; //I believe this is a correct usage of a discriminator
union myUnion{
char mainFoodSource[10];
int numLimbs : 3;
struct bear{
char blackOrBrown[5];
float height; //in feet standing
} b;
struct snake{
float length;
char mainColor[20];
} s;
} u;
} animals[20];
我如何能够区分数组中的每个元素是 bear
还是 snake
,使用那个 char key
;我已经放在并集之前了?
这只是根据您在需求中解释的内容提出的建议。
有变量键来存储 'b' 表示它是熊,'s' 表示它是蛇。
myUnion 将分配最大内存 (sizeof(float)+sizeof(char[20]);
尝试将 mainColor 和 mainFoodSource 放在一个结构变量中以防止混淆。
鉴于这个快速完成的示例,我希望能够通过公共属性(color
或 mainFoodSource
)搜索 animals
数组并仅输出 bears
,或 snake
s 具有指定的匹配属性。
鉴于我的 animals
数组定义如下:
struct animal{
char key; //I believe this is a correct usage of a discriminator
union myUnion{
char mainFoodSource[10];
int numLimbs : 3;
struct bear{
char blackOrBrown[5];
float height; //in feet standing
} b;
struct snake{
float length;
char mainColor[20];
} s;
} u;
} animals[20];
我如何能够区分数组中的每个元素是 bear
还是 snake
,使用那个 char key
;我已经放在并集之前了?
这只是根据您在需求中解释的内容提出的建议。
有变量键来存储 'b' 表示它是熊,'s' 表示它是蛇。
myUnion 将分配最大内存 (sizeof(float)+sizeof(char[20]);
尝试将 mainColor 和 mainFoodSource 放在一个结构变量中以防止混淆。