#include "stdafx.h"
#include <stdio.h>
union bt
{
int a;
int b[2];
};
void fun (union bt *c)
{
c->a=-7;
c->b[0]=9;
c->b[1]=8;
}
void main(int argc, char* argv[])
{
union bt c;
fun(&c);
printf("%d\n",c.a);
}
这个是怎么执行的啊?怎么结果是9呢?
#include "stdafx.h"
#include <stdio.h>
union bt
{
int a;
int b[2];
};
void fun (union bt *c)
{
c->a=-7;
c->b[0]=9;
c->b[1]=8;
}
void main(int argc, char* argv[])
{
union bt c;
fun(&c);
printf("%d\n",c.a);
}
这个是怎么执行的啊?怎么结果是9呢?
联合union就是将同一个内存单元分配给多个变量的做法。
a的位置,就是b的位置,所以
c->a=-7;---------不起作用
c->b[0]=9;-------这句才是真正有用的。
c->b[1]=8;
最终结果等于9