结构里的联合问题。

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:35:34
struct my_structure
{
int numl;
float num2;
union
{
int *pnum;
float *pfnum;
} my_U;
} samples[5]
然后访问结构数组中第三个元素的int指针,
samples[2].my_U.pnum = &my_num;
然后书上说的这句话我不懂了:
假设变量my_num已经声明为int类型,使用储存在联合中的值时,总是会提取上次赋予联合的值,但事实上,这很容易将最近储存的为整数的值当成float。为什么呢??
http://zhidao.baidu.com/question/110663841.html

我想,是说写程序的人不小心容易搞错.

当指向int时,只能用值 *samples[2].my_U.pnum,
如果用值 *samples[2].my_U.pfnum 就错了.

同样,当指向 float 时,只能用值 *samples[2].my_U.pfnum, 不能用 *samples[2].my_U.pnum.

因为 samples[2].my_U 指向的值, 不会因为指向int 而你用了.pfnum 它会自己转化为float.