问题遇到的现象和发生背景
union node_u
{
struct
{
union node_u *left;
union node_u *right;
}internal;
double data[2];
};
问题相关代码,请勿粘贴截图
int main(){
struct node_s s;
union node_u u;
union node_u node1;
union node_u node2;
union node_u node3;
node1.data[1] = 1;//数据
node1.internal.left = &node2;//左子树
node1.internal.right = &node3;//右子树
node2.data[1] = 2;
printf("%d",sizeof(node1));
printf("\n");
printf("%lf",node1.internal.left->data[1]);
return 0;
}
运行结果及报错内容
16
2.000000
PS F:\desktop\CSapp\3>
我的解答思路和尝试过的方法
union结构中存储的不是互斥的俩个数据结构吗? 为什么union1中既可以存放数据节点 又可以存放子节点?
我想要达到的结果
我认为给数据域赋值以后就不能对他的子节点的域进行操作,应当报错。