const int a = 3; int* p = (int *)&a; *p = 4; printf("a-------%d------
", a); printf("*p-------%d------
", *p); printf("&a-------%d------
", (int)&a); printf("p-------%d------
", (int)p);
输出:
a-------3------ *p-------4------ &a-------1606416268------ p-------1606416268------
问题是 const
修饰a
变量后,a
不能修改,但是可以隐式修改a
的值,就是用指针。 我用指针修改了值,为什么输出的时候 a
没有改变。*p
的值改变了。
因为这本身就是ub,你这么做究竟能导致什么结果,编译器是不会给你保证的。
一周热门 更多>