偶然的你
数组元素必须具有相同的大小,这就是为什么它不可能的原因。您可以通过创建变体类型来解决它:#include <stdio.h>#define SIZE 3typedef enum __VarType { V_INT, V_CHAR, V_FLOAT,} VarType;typedef struct __Var { VarType type; union { int i; char c; float f; };} Var;void var_init_int(Var *v, int i) { v->type = V_INT; v->i = i;}void var_init_char(Var *v, char c) { v->type = V_CHAR; v->c = c;}void var_init_float(Var *v, float f) { v->type = V_FLOAT; v->f = f;}int main(int argc, char **argv) { Var v[SIZE]; int i; var_init_int(&v[0], 10); var_init_char(&v[1], 'C'); var_init_float(&v[2], 3.14); for( i = 0 ; i < SIZE ; i++ ) { switch( v[i].type ) { case V_INT : printf("INT %d\n", v[i].i); break; case V_CHAR : printf("CHAR %c\n", v[i].c); break; case V_FLOAT: printf("FLOAT %f\n", v[i].f); break; } } return 0;}并集元素的大小是最大元素的大小4。