指向C ++中const变量的指针

时间:2017-03-09 11:25:22

标签: c++

我正在四处寻找我目前对C ++行为的理解结束的地方。我写了下面的代码,得到了一些非常意外的结果。

#include <iostream>
#include <cstddef>
using namespace std;

int main()
{
    const char c = 'A';
    cout << c << endl;
    size_t l = (size_t)(&c);
    char* d = (char*)l;
    *d = 'B';
    cout << (size_t)d << " " << (size_t)&c << endl;
    cout << *d << " " << c << endl;
}

第一行按预期输出&#39; A&#39;在第二行,两个地址是相同的。但是,第三行输出&#34; B A&#34;。

显然这是一个糟糕的代码,但为什么c的价值没有变化(或者为什么它没有编译?)换句话说,如果它们都有相同的地址,为什么不#&# 39;他们有相同的价值吗?

如果重要,我的系统是MS Windows 7,x86上的GCC 4.8.1 64位。

0 个答案:

没有答案