C语言,联合的一些问题
书上关于“联合”讲得很少,有个例子是这样的
#include <stdio.h>
int main(void)
{
union u_ex
{
float deval;
int pnum;
double my_value;
}U1;
U1.my_value=125.5;
U1.(*pnum)=3;
U1.deval=1000.5;
printf("\ndeval%f pnum=%d my_value=%lf",U1.deval,U1.pnum,U1.my_value);
return 0;
}
后面的解释就是说最后的输出只有最后赋值的那个变量值是正确的,因为使用的是联合内存。
那么联合究竟使用在什么地方呢?这是问题一。
第二个问题,我企图把联合中的一个变量声明为指针,想要输出指针指向的数值,而非地址,但是编译通不过,这又是为什么呢?
#include <stdio.h>
int main(void)
{
union u_ex
{
float deval;
int *pnum;
double my_value;
}U1;
U1.my_value=125.5;
int a=3;
U1.pnum=&a;
U1.deval=1000.5;
printf("my_value=%lf\ndeval=%f \n pnum=%d \n",U1.my_value,U1.deval,U1.(*pnum),); //这句会报错
return 0;
}