社区
新手乐园
帖子详情
为啥没改变i的值
Shangrila_lj
2012-04-17 05:46:51
#include <iostream>
using namespace std;
int main()
{
const int i=10;
int *p=(int*)&i;
*p=100;
cout<<i<<endl;
}
...全文
221
19
打赏
收藏
为啥没改变i的值
#include using namespace std; int main() { const int i=10; int *p=(int*)&i; *p=100; cout<<i<<endl; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2012-05-08
打赏
举报
回复
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
花溪
2012-05-08
打赏
举报
回复
i是常量类型,本来就不能改变值。
代码
int *p=(int*)&i;
有问题。因为&i是常量指针,不建议常量指针与变量指针之间相互转换。
你搜索“常量指针”就会有你想要的
青霜无痕
2012-05-07
打赏
举报
回复
好好看const
cbzjzsb123
2012-04-23
打赏
举报
回复
const只能赋值不能改变,非要改的话const_cast
yt_cloud
2012-04-20
打赏
举报
回复
const只能赋值不能改变,非要改的话const_cast
wingzero520
2012-04-19
打赏
举报
回复
i是常量,int *p=(int*)&i 后 p 并不是 i 的地址,一般是编译器临时地在栈中构造了一个 int ,初始化为 i 的值(10),并把它的地址给了 p。
cheung189
2012-04-19
打赏
举报
回复
i is a constant
wizard_tiger
2012-04-19
打赏
举报
回复
i是一个常量值,禄始化后值不能改变。
m4433080
2012-04-18
打赏
举报
回复
你用const修饰符定义了一个int型的i,其值初始化后是不变的,你想通过指针p指向他,并修改指针p指向i的值是不行的。但是指针p指向其他变量是可行的。你可以试试输出p所指向的值,他的值是100。
#include <iostream>
using namespace std;
int main()
{
const int i=10;
int *p=(int*)&i;
*p=100;
cout<<i<<endl;
cout<<*p<<endl;
}
laomashitu
2012-04-18
打赏
举报
回复
常量折叠
loongee
2012-04-18
打赏
举报
回复
百度 常量折叠
[Quote=引用 5 楼 的回复:]
c++里的常量折叠(或者常量替换)是将const常量放在符号表中,而并不给其分配内存。编译器直接进行替换优化
[/Quote]
帅得不敢出门
2012-04-18
打赏
举报
回复
c++里的常量折叠(或者常量替换)是将const常量放在符号表中,而并不给其分配内存。编译器直接进行替换优化
Spy
2012-04-18
打赏
举报
回复
int *p=(int*)&i;这步有点不合理[Quote=引用 3 楼 的回复:]
i是常量类型,本来就不能改变值。
代码
int *p=(int*)&i;
有问题。因为&i是常量指针,不建议常量指针与变量指针之间相互转换。
你搜索“常量指针”就会有你想要的
[/Quote]
ghlhy0505
2012-04-18
打赏
举报
回复
指针p指向的是const常量啊,初始化后就不允许修改了
JackPan
2012-04-18
打赏
举报
回复
我怎么没看到有静态变量,,,
小巫技术博客
2012-04-18
打赏
举报
回复
i是静态变量,不能改变值的
liyongf
2012-04-17
打赏
举报
回复
i是常量类型,本来就不能改变值。
代码
int *p=(int*)&i;
有问题。因为&i是常量指针,不建议常量指针与变量指针之间相互转换。
你搜索“常量指针”就会有你想要的
ligang7895123
2012-04-17
打赏
举报
回复
借用二楼的回答 i是静态变量 无空间实体 无法更改 只能改变指针的值
夜雨十年灯
2012-04-17
打赏
举报
回复
i是静态变量,程序只将指针p的指向从10改成了指向100
Python - 在for循环体内修改i
值
Python - 在for循环体内修改i
值
场景:在循环体内判断条件发生时,重新执行执行当前循环体(保留当前i
值
) 常规:类似的需求一般会在循环体里写一个 if 加上continue / break 实际:但是在for循环内修改i
值
,只会对当前一次的循环体内有效 for i in range(1,5): print("i in use:", i) i = 20 print(...
【python学习】——为什么for循环里不可以
改变
变量的
值
在之前的编程语言里,学到for循环里面是可以重置变量i的
值
的,然后让整个for循环从头开始,但是在python里面却行不通这是为什么呢???在python中,for循环相当于一个迭代器(Iterator),在循环体中
改变
循环变量的
值
对循环次数是
没
有影响的。 迭代器在一个独立的线程中工作,并且拥有一个mutex锁。迭代器被创建的时候,建立了一个内存索引表(单链表),这个索引表指向原来的对象,当原来的...
Python for 循环的坑,不能修改i 的
值
今天在使用python for 循环的时候,遇到一个万年坑啊。 for i in range(1,10,3): print(i) i+=1 请问这个的输出结果是什么? 错误答案如下: 1 5 9 正确的答案是: 1 4 7 原因就是,这里的for 循环只是遍历range(1,10,3)=[1,4,7]的元素。这个和其他语言不一样。 需要修改的i的
值
可以参考如下博客内容。 https://blog.csdn.net/LegenDavid/article/details/50056047 ...
java传参怎么
改变
参数
值
java利用方法参数传递这个问题困扰了我一天,关于java传参有三种传递方式,《java核心技术卷I》里也提到了。 1.一个方法不能修改一个基本数据类型的参数 ( 即数
值
型或布尔型 ),String类型也不行 。 2.一个方法可以
改变
一个对象参数的状态 。 3.一个方法不能让对象参数引用一个新的对象。 困扰我的是第三点。 下面举个例子: 通过这个例子可以看出方法sway
没
有能够交换两个对象的
值
,...
for循环中i++与++i的区别
主要有以下三个区别: 1、++i是先
改变
i的
值
即加1后再使用i的
值
;而i++是先使用i的
值
在
改变
它的
值
即加。 2、for循环内部仅形式不同:当i++循环和++i循环在for循环内部,虽然形式上明显不同,但输出结果可以一样。如下图所示: for(i++)循环: 输出结果: for(++i)循环: 输出结果: 3、printf()输出函数内,不仅形式不同且输出结果也不同:i++和++i,二者在...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章