首页 > 编程知识 正文

c编程语言常见问题,语言问题

时间:2023-05-05 22:08:50 阅读:183299 作者:4560

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

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语言是古老的魔法,你可以天马星空,但是死也快。。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。