编程?小白 2022-04-09 12:09 采纳率: 0%
浏览 18

c++ union 的内存分配问题

问题遇到的现象和发生背景
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中既可以存放数据节点 又可以存放子节点?

我想要达到的结果

我认为给数据域赋值以后就不能对他的子节点的域进行操作,应当报错。

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2022-04-09 12:44
    关注

    这个表示节点要么是叶子,只有数值,要么是树干,只有子节点,所以用union

    评论

报告相同问题?

问题事件

  • 创建了问题 4月9日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据