c语言 联合体问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 21:25:11
union
{
int temp1[10];
double temp2[10];
char *p;
}data;
}unin;
void main()
{
int k;
unin temp;
for(k=0;k<9;k++)
{
temp.data.temp2[k]=(double)k;
}
for(k=0;k<9;k++)
{
printf("%d\n",temp.data.temp1[k]);
}
}
请问输出多少,请帮解释下为什么,谢谢!
我想得到0,0,0,1,0,2...............应该怎么做呢?

union中的数据是共享内存的,如果
for(k=0;k<9;k++)
{
temp.data.temp2[k]=(double)k;
}
则这时中的内存为10个浮点数
下面读入整数,将依次从内存中按4个字节读取!
for(k=0;k<9;k++)
{
printf("%d\n",temp.data.temp1[k]);
}
for(k=0;k<9;k++)
{
temp.data.temp1[k]=k;
}
如果你想获得temp1数据,就应该先对它进行赋值。如:

UNION基本没地方用了吧现在