为啥没改变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 打赏 收藏 转发到动态 举报
写回复
用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

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧