int main()
{
const int i = 10;
int *p = (int*) &i;
*p = 20;
printf("%d\n",i); // 10
printf("%d\n",*p); // 20
}
Run Code Online (Sandbox Code Playgroud)
我可以得到我的真实地址吗?如果我想改变i的价值,我该怎么办呢?原谅我可怜的英语!
我可以得到我的真实地址吗?
是:
const int* p = &i;
...
printf("%p\n", p);
Run Code Online (Sandbox Code Playgroud)
如果我想改变i的价值,我该怎么办呢?
你最好不要,这是未定义的行为.毕竟,const
意味着"不能改变"不是吗?如果您确实想要因任何原因而更改它,则不应将其声明为const
句点.
在某些平台上,const数据被放入一个不同的只读内存段,并且尝试写入这些位置会导致段错误.此外,许多编译器用它们的字面值替换对const变量的引用,并且 - 在您的情况下似乎 - 尝试获取这些的地址可能会创建一个带有原始值副本的临时变量.所以你只能改变临时值,而不是原始值.
归档时间: |
|
查看次数: |
1321 次 |
最近记录: |