通过int指针修改const int变量

时间:2017-01-06 19:05:33

标签: c++ c

我在link中读到,将const int *的地址分配给int *对于C ++是非法的并且抛出编译器错误。 我尝试通过显式转换将const int *赋值给int *并尝试更改值。我无法理解程序行为。我想知道它是不确定的行为还是背后有一些推理。

#include <stdio.h>

int main()
{
    int const i = 20;
    int * ptr;

    ptr = (int *)&i;

    *ptr = 500;

    printf("%d %d %p %p\n", *ptr, i, ptr, &i);

    return 0;
}

输出

500 20 0x7ffe16ea5134 0x7ffe16ea5134

0 个答案:

没有答案