社区
C++ 语言
帖子详情
大家探讨下这几行代码!
lhz62004753
2008-10-31 04:44:08
const int i=40;//常量 i
int *p = (int *)&i;//强制转换
*p = 80;
cout<<*p<<endl;
cout<<i<<endl;
cout<<p<<" "<<&i<<endl;
运行结果是*p的值为80,而i的值还是40,不知道是为什么,有哪位高手解答下,谢谢
...全文
134
13
打赏
收藏
大家探讨下这几行代码!
const int i=40;//常量 i int *p = (int *)&i;//强制转换 *p = 80; cout<<*p<<endl; cout<<i<<endl; cout<<p<<" "<<&i<<endl; 运行结果是*p的值为80,而i的值还是40,不知道是为什么,有哪位高手解答下,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lhz62004753
2008-10-31
打赏
举报
回复
谢谢各位了,就是说编译器在后头搞的鬼,其实i的值是改变了的。。。。
机智的呆呆
2008-10-31
打赏
举报
回复
volatile const int i=40;//取消编译器优化
redleaves
2008-10-31
打赏
举报
回复
const会编译时展开,直接用值替换对象本身...
lq651659889
2008-10-31
打赏
举报
回复
up
yuegui2
2008-10-31
打赏
举报
回复
*p = 80;
很明显的赋值语句嘛
太乙
2008-10-31
打赏
举报
回复
编译器在编译期间就做了手脚!
将所有的i替换成了40!!
hhyttppd
2008-10-31
打赏
举报
回复
[Quote=引用 6 楼 luansxx 的回复:]
cout < <i < <endl;
在编译这个的时候,编译器认为i是常量,直接用40替换了,并没有去关心i是不是已经变了。另外i肯定是有地址的,而且实实在在存在,并不是编译器临时变量。
[/Quote]
我观察了一个VS2005的汇编输出,果然如你所言。
Fighting Horse
2008-10-31
打赏
举报
回复
cout < <i < <endl;
在编译这个的时候,编译器认为i是常量,直接用40替换了,并没有去关心i是不是已经变了。另外i肯定是有地址的,而且实实在在存在,并不是编译器临时变量。
VsirSoft
2008-10-31
打赏
举报
回复
int *p = (int *)&i;这句话只是将i的地址赋值给了*p而已,而p并没有指向i的地址。
哦 另外2楼所说的有点错误 p是指向i的地址的 只不过地址的内容无法更改
VsirSoft
2008-10-31
打赏
举报
回复
关键就在于 const 楼主应该去搜索一篇关于const的文章学习一下 把const去掉你会看到效果
hhyttppd
2008-10-31
打赏
举报
回复
可能是生成了临时变量,这种行习标准上说是未定义的(undefined)
相当于
const int i=40;//常量 i
//int *p = (int *)&i;//强制转换
int temp = 40;
int * p = &temp;
*p = 80;
cout < <*p < <endl;
cout < <i < <endl;
cout < <p < <" " < <&i < <endl;
coverallwangp
2008-10-31
打赏
举报
回复
[Quote=引用楼主 lhz62004753 的帖子:]
const int i=40;//常量 i
int *p = (int *)&i;//强制转换
*p = 80;
cout < <*p < <endl;
cout < <i < <endl;
cout < <p < <" " < <&i < <endl;
运行结果是*p的值为80,而i的值还是40,不知道是为什么,有哪位高手解答下,谢谢
[/Quote]
*p赋值为80,当然*p的值就是80了,i是个const常量没法改变再说你也没有改变,所以还是40
int *p = (int *)&i;这句话只是将i的地址赋值给了*p而已,而p并没有指向i的地址。
Mougou
2008-10-31
打赏
举报
回复
翻翻今天上午的帖子,我刚刚回答过
那些只有
几行
,但是却非常牛逼的
代码
!
开发者(KaiFaX)面向全栈工程师的开发者专注于前端、Java/Python/Go/PHP的技术社区作者 |编程艺术思维来源|urlify.cn/jqUree1、no code项...
如何解决spark开发中遇到需要去掉文件前
几行
数据的问题
我碰到的问题是这样的,我需要读取压缩文件里的数据存到hive表里,压缩文件解压之后是一个txt,这个txt里前
几行
的数据是垃圾数据,而这个txt文件太大,txt是直接打不开的,所以不能手动打开删除前
几行
数据,而这个文件是业务人员从别人那拿到的所以也不能改,本文就是讲如何解决这个问题。...
几行
代码
,优雅的避免接口重复请求!同事都说好!
我们日常开发中,经常会遇到点击一个按钮或者进行搜索时,请求接口的需求。如果我们不做优化,连续点击按钮或者进行搜索,接口会重复请求。首先,这会导致性能浪费!最重要的,如果接口响应比较慢,此时,我们在做其他操作会有一系列bug!那么,我们该如何规避这种问题呢?
关于“
几行
代码
”
几行
代码
,网盘链接提头来见!
背景 晚上,女朋友下班回来,我邀请她下楼去散步,她一副愁眉苦脸的样子,说今晚要加班。 仔细询问之下得知:女朋友今天接到上司一个任务,领导丢给她一个文件,里面密密麻麻满是百度网盘链接和提取码,需要她今天结束之前把网盘里的文件提取出来。 听到她说要熬夜肝工作那种委屈的模样,我是真的有点心疼。于是本能地问她,现在工作中最影响效率的是哪个环节,我来帮她一起肝。她告诉我,看这个百度网盘的链接看得眼都花了,要复制链接,以及复制提取码是个技术活,因为有其他文字干扰,经常复制不准。 链接类似下面这样的: 链接:.
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章