如何在没有实际使用c中的union的情况下建立联合?

时间:2015-03-19 22:20:27

标签: c unions

我需要在不使用union关键字的情况下在c中创建联合。

x = 1;

…

x = ‘c’;

…

x = 3.1415; /* the data type of x changes during runtime. */

… 

我也试图不使用数组。

1 个答案:

答案 0 :(得分:3)

严格来说,如果不声明union,则无法生成union,因为union是一种便于使用标准兼容方式共享存储的语法。但是,没有“联合命令”这样的东西。

如果您想要的是能够在共享内存空间中存储不同类型的值,请在您希望伪装联盟覆盖的类型中选择一种最大大小,并使用指针强制转换进行分配:

long long shared;
*((int*)&shared) = 5;
*((char*)&shared) = 'c';
*((float*)&shared) = 3.14f;