我有点糊涂了以下情况隐藏存储在哪里?
const char c = 'C';
char * p = const_cast<char *>(&c);
*p = 'K';
cout << " c = " << c << endl;
cout << " *p = " << *p << endl;
printf("c's address : %u\n", &c);
printf("P is pointing to : %u\n", p);
其中如下输出上执行
c = C
*p = K
c's address : 3221180271
P is pointing to : 3221180271
在这里我可以看到,这两个“& C”和“P”中具有相同的地址记忆。
那么'p'能够存储与'c'不同的值的隐藏机制是什么,而两者在内存中共享相同的地址空间?
@R。 Martinho Fernandes:谢谢你的提醒。我已经更清楚地知道UB究竟发生了什么。 :-) –
+1用于指出在编译时将常量变量替换为字面值。 –
谢谢你清除我的疑惑 –