指向常数的指针

aka*_*ash 2 c++ pointers const

#include <iostream>
using namespace std;

int main(void)
{
   const int a1 = 40;
   const int* b1 = &a1;
   int * c1 = (int *)(b1);
   *c1 = 'A';
cout<<*c1<<endl;
cout<<a1<<endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

O/P:

65
40
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释输出吗?

jua*_*nza 6

你正在做的是抛弃const(变量a1)某事物的常数.这导致未定义的行为(UB).实际上,这意味着任何事情都可能发生.你观察到的是"任何事物"的一种表现形式.

通常,涉及UB的问题的答案包括可能发生的疯狂事件的疯狂例子.我将通过避免这种做法来打破传统.