c语言const 转为非const的问题

昨天碰到一个奇葩的问题。
我定义的数据结构

struct tree
{
    tree* left;
    tree* right;
}

然后我用priorityqueue< tree>载入进去。但是这个类的top()函数出来的东西是const类型的。会出现这种问题
这里写图片描述
所以这里涉及到了const转为非const的问题。
一个毁三观的代码是这样的

tree aNewTreeNode;
    aNewTreeNode.value=2;
    aNewTreeNode.left=(tree*)&myQueue.top();

把const直接强转没了。但是这样虽然编译通过但是在实际中随意丢弃const会有问题。当如果本身的变量不是const类型。后期加上了const,也就是我这种情况来说这样转换没有问题。而对于本身就是const变量的话如果这么转换会有未定义的效果出现。我做了一个实验,结果三观都没了。
这里写图片描述
看见了没?一个地址有两个值。。。估计是编译器有啥优化吧。。反正c语言是古老的魔法,你可以天马星空,但是死也快。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值