我需要在不使用union
关键字的情况下在c中创建联合。
x = 1;
…
x = ‘c’;
…
x = 3.1415; /* the data type of x changes during runtime. */
…
我也试图不使用数组。
答案 0 :(得分:3)
严格来说,如果不声明union
,则无法生成union
,因为union
是一种便于使用标准兼容方式共享存储的语法。但是,没有“联合命令”这样的东西。
如果您想要的是能够在共享内存空间中存储不同类型的值,请在您希望伪装联盟覆盖的类型中选择一种最大大小,并使用指针强制转换进行分配:
long long shared;
*((int*)&shared) = 5;
*((char*)&shared) = 'c';
*((float*)&shared) = 3.14f;