我想在数组中存储混合数据类型。怎么可以这样呢?
您可以使数组元素成为可区分的联合,也称为标记联合。
struct {
enum { is_int, is_float, is_char } type;
union {
int ival;
float fval;
char cval;
} val;
} my_array[10];
该type
成员用于选择union
每个数组元素应使用的哪个成员。因此,如果要int
在第一个元素中存储一个,则可以执行以下操作:
my_array[0].type = is_int;
my_array[0].val.ival = 3;
当您要访问数组的元素时,必须首先检查类型,然后使用联合的相应成员。一条switch
语句很有用:
switch (my_array[n].type) {
case is_int:
// Do stuff for integer, using my_array[n].ival
break;
case is_float:
// Do stuff for float, using my_array[n].fval
break;
case is_char:
// Do stuff for char, using my_array[n].cvar
break;
default:
// Report an error, this shouldn't happen
}
程序员要确保type
成员始终与存储在中的最后一个值相对应union
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句