3 回答

TA貢獻1788條經驗 獲得超4個贊
使用聯(lián)合:
union {
int ival;
float fval;
void *pval;
} array[10];
但是,您將必須跟蹤每個元素的類型。

TA貢獻1841條經驗 獲得超3個贊
數(shù)組元素必須具有相同的大小,這就是為什么它不可能的原因。您可以通過創(chuàng)建變體類型來解決它:
#include <stdio.h>
#define SIZE 3
typedef 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。
- 3 回答
- 0 關注
- 981 瀏覽
添加回答
舉報