c++ - 为什么同一内存位置同时保存不同的值?

标签 c++

<分区>

相同的内存位置如何在以下程序中保存不同的值? 我正在使用 g++ 编译器。

代码:

#include<iostream>
using namespace std;

int main()
{
   const int i=100;
   int *j = const_cast<int*>(&i);
   *j=1;

   cout<<"The value of i is:"<<i<<endl;
   cout<<"The value j holds:"<<*j<<endl;
   cout<<"The address of i is:"<<&i<<endl;
   cout<<"The address of j is:"< <j<<endl;

}

输出:

The value of i is:100
The value j holds:1
The address of i is:0xbffbe79c
The address of j is:0xbffbe79c

最佳答案

你有未定义的行为,所以任何事情都有可能发生。在这种情况下,编译器知道 i 不能更改值,可能只是直接使用该值。

关于c++ - 为什么同一内存位置同时保存不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282535/

相关文章:

c++ - 如何将字节保存到pdf文件(如何将每个pdf页面更改为字节)

c++ - 在没有测试数据的情况下查找段错误

c++ - 布冯的针 C++

c# - 将 CString 从 C++ 编码(marshal)到 C# 时如何(如果需要)释放动态内存?

c++ - 如何让 Eclipse CDT 从数据成员生成 C++ 类构造函数?

C++转换题

c++ - 为什么我应该使用 Apache C++ 标准库而不是任何其他 STL 实现以及 Boost?

c++ - 循环递归函数c++

c++ - 阻止程序打开您的程序

c++ - 使用 OpenGL 绘制三角形