我有點糊塗了以下情況隱藏存儲在哪裏?
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用於指出在編譯時將常量變量替換爲字面值。 –
謝謝你清除我的疑惑 –