我在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