问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中关于const变量与指针

发布网友 发布时间:2022-08-13 11:26

我来回答

5个回答

热心网友 时间:2024-11-24 00:04

其实在这里面*(int*)p = 0;,这句话改为c++,就是 *(const_cast<int*>(p)) = 0;const_cast就是将p的const属性去掉了,这句话还是修改了i的,下面是代码的调试结果:感觉是因为const int i=1;这句话导致编译器优化下面的if语句

如果改为int i=1;

输出结果就不一样了

热心网友 时间:2024-11-24 00:04

啥也不说了,看来知识欠缺呐,下边的链接讲的很好,先看链接里人家讲的吧。
http://blog.chinaunix.net/uid-26853826-id-3365403.html

还有一个和你最后的一个问题问的挺像
http://q.cnblogs.com/q/28531/
我的理解就是使用*(int*)p=0;这句话已经把p指向的地址的const属性改变了,即就是去除了const属性,所以可以改变其地址的内容(地址内容确实被改变了,我调了内存看过的)。然后变量a为什么还是10,就是因为const这个玩意,使得读a这个变量时可能是读到那个专门存储他的寄存器上(汇编里不知道是不是叫寄存器,这个寄存器存放了这个变量的值和以前的地址),然后用它的时候就只从这个寄存器读出来,而不是从内存中的地址读,所以打印出来它是没有变化的。自己的猜测,欢迎讨论~

热心网友 时间:2024-11-24 00:05

(int*)p将(const int *)p 强制类型转换为int *类型(去const),因此*(int*)p可以赋值,但强制类型转换并没有改变p本身,故p本身依旧是const,(强制类型转换 编译器生成了一个临时变量),因此*p当然不能复制(因为还是const的),至于&i=p,而*p != i,这一条我也不知道,所以嘛,主要是留名等大神来的~

热心网友 时间:2024-11-24 00:05

这是传说中万恶的常量折叠问题。这里面的常量跟宏定义差不多,编译器在编译的时候会将所有的i都替换成 1,就像#define i 1 一样,这是后在改变i地址里的值,对编译时没有影响的。此时 p 和 &i是相同的,但是去值 *p,和*(&i)确实不同的。因为i无论怎么变都是1.

热心网友 时间:2024-11-24 00:06

你看一下这一篇的解释就知道了:blog.chinaunix.net/uid-26853826-id-3365403.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 const变量赋值 CONST的变量与常量 const类型变量 套管头里面的bt密封是什么意思 用BT下载会损坏硬盘吗? 什么是BT密封圈 怎样使BT不伤硬盘 BT下载为什么会伤硬盘? 苹果的序列号开头代表着什么??? 原来办的建行鲁通卡,现在换车了,怎么更改? 我的鲁通卡坏了,没有显示了,哪里能维修? 爱酷pro视频通话怎么美颜? 社交礼仪的基本原则有哪些 社交礼仪的基本原则什么 java中局部变量只能申明在方法体里吗 关于java构造函数中的局部变量存在的位置问题 小学开展“崇尚英雄精忠报国”主题班会活动总结 由CPU性能不足造成显卡不能发挥全部性能怎么办,我的rx570只能跑... 这是网上某一个天梯图MT6737T比MT6735还强仅次于MT6737相当于晓龙430... 万国觉醒手游升级斥候营地可以提升哪两项参数 升级斥候营地可以提升的... 用关键字const定义的变量是什么变量? 魔塔60层齐天大圣版13层的剑怎么得? 请问魔塔中打到第20层之后怎么办,或者说第13层的银剑怎么取,有人说是... 网络正常的,网页丢失,播放器也是加载失败 ...显示网页走丢了,有些又能用。比如爱奇艺,扣扣能用,微博网页版不能用... 爱奇艺播视频时说网页丢失是为什么? 小米怎么恢复50电量? 翼支付红包中的钱能取出来吗? i512500h是什么水平 BT131可控硅参数 联系笔记本i5 12500h相当于台式什么cpu? GTX570鲁大师跑分极低这个正常吗? 570显卡跑鲁大师怎么才八十几分 现在黄金回收什么价钱 英雄为什么不是普通人的原因有哪些 写一个蕴含道理的故事并把道理写出来。 跪求一款邮件群发的软件!!推广用的,一次能发上千封邮件这样子的_百度... 汽车在低速行驶时电脑显示低速行驶防抱死系统不可用,然后ABS灯就亮了是... 汽车行驶中仪表盘突然显示发动机指示灯亮后加油门只能低速行驶是什么... 汽车导航对监控部分有限速提示是怎样回事