使用union将int转换为int *

时间:2018-02-17 17:05:26

标签: c++ c pointers unions

我正在阅读Bjarne Stroustrup的C ++ PL。它阐述了工会:

"工会有时被误用于“类型转换”。这种滥用主要由程序员实施 训练有没有明确类型转换设施的语言,以便作弊 有必要的。例如,下面的''将'转换'为一个int到一个int *,只需通过逐位假设 当量:

union Fudge {
int i;
int∗ p;
};
int∗ cheat(int i)
{
Fudge a;
a.i = i;
return a.p; // bad use
}

这根本不是转换。在某些机器上,int和int *不会占用相同的内容 空间量,而在其他空间,没有整数可以有一个奇数地址。使用工会是危险的,不可移植的。"

有人可以用简单的词语解释作者的意思吗?为什么不是转换?如果不是这样,那么我们如何实现类型转换?

0 个答案:

没有答案