const int to int * conversion

时间:2016-02-25 00:09:19

标签: c++ pointers const

我正在测试下面的代码,并期望编译器抛出运行时异常,因为我正在更改v的值,它指的是与intV相同的地址,这是一个常量。但是,我得到了以下输出

4
5
4
0x7ffea6823a44
0x7ffea6823a44

有人可以解释为什么intV的地址与v相同但是intV的值与* v的值不同?

int main(char ** args, int argc)
{
  const int intV = 4;
  int *v = const_cast<int*>(&intV);
  *v = 5;
  std::cout << intV << std::endl;
  std::cout << *v << std::endl;
  std::cout << intV << std::endl;
  std::cout << v << std::endl;
  std::cout << &intV << std::endl;
}

谢谢, RG

0 个答案:

没有答案